• 技术文章 >Java >java教程

    Java类、封装、继承的方法

    王林王林2023-04-28 11:19:14转载30

    什么是类成员

    使用static修饰的成员方法和成员变量称为类成员

    使用static修饰的成员变量叫做类变量

    使用static修饰的成员方法叫做类方法

    什么是实例变量

    未使用static修饰的成员方法和成员变量称为实例成员

    未使用static修饰的成员变量叫做实例变量

    未使用static修饰的成员方法叫做实例方法

    例如:

    public String name;  //这个就是实例成员(属性) 
    public static int age;//这个就是类成员(属性) 
    
    public void a(){
    	System.out.println("我叫:"+this.name)
    }                                    //这个没有加static的方法就是实例方法
    
    public static void a(){           	//这个加了static的方法就是类方法
    	System.out.println("我叫:"+this.name)
    }

    那么实例变量和类变量的区别呢?

    //定义一个类
    public class stu {
        public String name;  //这个类有一个名字这个属性,属于实例成员,也就是需要实例化对象了才可以使用
        //定义构造方法
        public stu(){}    //不管怎么样,都定义一个无参构造
        public stu(String name){    //定义有参构造,需要传入一个字符串名字
           this.name = name;         //这里若不使用this 关键字,那么是不会与上面的实例属性匹配
        }
        //定义方法
        public void a(){
            System.out.println(this.name);
        }
    }

    使用该类:

    public class stu_Test {
        public static void main(String[] args) {
            //实例化两个对象,基于stu类
            stu s1 = new stu("小红");   
            stu s2 = new stu("小王");
            //使用stu类里面的方法
            s1.a();
            s2.a();
        }
        
        //stu s1 = new stu("小红");  将会输出小红
        //stu s2 = new stu("小王");  将会输出小王
    }
    //通过这个就可以明白每个对象都有属于自己的实例变量(属性)

    那么类方法和实例方法的区别?

    static关键字

    Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量。 静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。对静态变量的引用有两种方式,分别是“类.静态变量"和”对象.静态变量"

    static成员方法:

    static用处:

    static注意事项: 静态只能访问静态,非静态既可以访问非静态的,也可以访问静态的。

    封装:

    封装的概念

    把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象进行操作,对不可信的类或者对象隐藏,这样的过程叫做封装。 简而言之:把自己的信息封闭起来,只给自己信任的人看和使用

    封装的分类

    封装的使用

    在将封装之前,我们先学习一下一个新的修饰符:private private:限制其只能在类的内部使用(也就是说被private修饰的方法和属性,只能在这个类内被发现和使用,在这个类外,是找不到这个属性的存在,这也达到了封装的效果)

    //给name这个属性进行封装
    private Strint name; //即可,这也我们在类外是找不到这个属性的存在的

    既然封装了,肯定也有对这个封装进行修改和使用的方法,是的,这就是get/set方法

    get/set方法

    public class stu {
        private String name; 
        public void setName(String name){    //set方法:对象调用这个方法,即可对私有属性进行修改
            this.name = name;   
        }
        public String getName(){         //get方法:对象调用这个方法,就可以使用该方法
            return name;
        }
    }

    使用:

    public class stu_Test {
        public static void main(String[] args) {
        stu s =new stu();
        s.setName("小红");  //给name 这个私有属性修改值为小红
            System.out.println(s.getName());
       
    }

    //程序运行后,输出值就是小红

    继承:

    什么是继承

    1:一个新类可以从现有的类派生,这样的过程叫做继承

    2:在继承的过程中,新类被称为子类,现有的类被称为父类,子类将会继承父类的属性和行为。

    继承语法:

    public class stu extends Student{   //在类名后加上extends,在写上继承的父类即可
    //这里可以写父类没有发属性及方法
    	public String ID;  //等等等等
    
    }

    注意: 继承不能继承父类的私有属性和方法!!!只要被private修饰的,都不被继承!!!

    关于子类: 子类除了可以拥有父类非私有的属性和方法外,也可以扩展自己的属性和方法

    继承的使用:

    简而言之:一个子类只能继承一个父类,如果这个类没有继承别的类,默认继承Object类(Java自带)

    无法继承父类的构造方法。

    方法的重写:

    @overriding

    什么是方法重写?:

    注意:构造方法不能被重写

    方法重写的规则:

    上代码:

    1:定义一个类,有名字和年龄的属性,分别有get/set方法,成员方法是输出名字和年龄:

    public class Person {
        private String name;
        private int age;
    
        //get/ste方法
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return name;
        }
    
        public void setAge(int age){
            this.age = age;
        }
        public int getAge(){
            return age;
        }
        //成员方法:
        public void print(){
            System.out.println("我叫:"+this.name+","+"我今年:"+this.age+"岁");
        }
    }

    2:写一个类,继承Person类,并且这个类拥有自己的一个sex属性,提供get/set方法 并且重写父类的print方法,输出名字+年龄+性别

    public class child extends Person{
        private String sex;      //这个child类继承了Person类,但也拥有自己的属性 sex性别
        public void setSex(String sex){
            this.sex = sex;
        }
        public String getSex(){
            return sex;
        }
        @Override
        //重写父类方法: 因为父类是输出名字和年龄,这里要输出名字,年龄和性别
        public void print(){
            System.out.println("我叫:"+getName()+","+"我今年:"+getAge()+"岁"+","+"我是"+sex+"孩子");
        }
    }

    3:新建测试类,测试两个类的继承、重写

    //测试类,
    public class Test {
        public static void main(String[] args) {
            child c = new child();
            c.setName("小红");
            c.setAge(20);
            c.setSex("男");
            c.print();
        }
    }
    //分别执行child继承person的set方法,使用重写后的方法,

    //输出结果为: 我叫:小红,我今年:20岁我是男孩子

    super关键字:

    super代表的是父类对象

    super的使用方式:

    1:super.属性名 用于在子类中调用父类被隐藏的同名实例变量

    2:super([参数列表]) 用于在子类的构造方法中调用父类的构造方法

    注意事项:

    简而言之:super就是调用父亲的属性和方法来使用

    上代码:

    1:新建一个类:定义age为20

    public class super_test {
        public int age=20;
        public void print(){
            System.out.println(this.age);
        }
    }

    2:建第二个类,继承第一个类;

    public class su2 extends super_test{
        public int age = 10;
        @Override
        public void print(){
            System.out.println(super.age);  //这里使用super,意思是使用父类的age
        }
    }

    3:建立测试类:

    public class test {
        public static void main(String[] args) {
        su2 s = new su2();
        s.print();
    	}
    }

    这样输出的就是20,是父类的age Java类、封装、继承的方法

    this与super的区别:

    以上就是Java类、封装、继承的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java
    上一篇:java重载方法的参数如何设置 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Java如何实现JDK动态代理• Java内存模型实例分析• java高并发InterruptedException异常问题怎么解决• PHP和Java des的加密解密实例分析• 怎么使用Java实现先查询缓存再查询数据库
    1/1

    PHP中文网