2021-10-15(java)

一:方法调用:

        1、静态方法:

                静态方法可以直接运用(static)。

                非静态方法需要实例化(new 对象)。

                static是和类一起加载的。

                类实例化以后才存在。

    public static void a(){
        b();               //b报错
    }
    public void b(){
        a();                //a不报错
    }

        2、形参和实参:

    public static void main(String[] args) {
        add(1,1);                    //实际参数
    }
    public static int add(int a,int b){    //形式参数
        return a+b;
    }

        3、值传递和引用传递:

                值传递

    public static void main(String[] args) {
        int a=1;
        System.out.println(a);                    //输出1
        change(a);
        System.out.println(a);                    //输出1
    }
    public static void change(int a){
        a=10;
    }

                引用传递(本质还是值传递)

public class Demo {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student.name);                    //为null
        change(student);
        System.out.println(student.name);                   //为张三
    }
    public static void change(Student student){ 
        student.name="张三";
        //student是一个对象,指向的为class Student
    }
}
class Student{
    String name;
}

        4、构造器:

                一个类即使什么都不写,它也会存在一个方法

public class Student(){

        public Student(){}          //无参构造

}

类:(封装、继承、多态)

        静态的属性     属性

        动态的行为     方法

        5、封装:(高内聚,低耦合)

                属性私有(private)

                所以需要public方法调用它们(gat/set)

        6、继承:(java只有单继承,没有多继承)

                例子:

public void text(String name){
    System.out.println(name);             //有参构造,属性
    System.out.println(this.name);        //子类里面的
    System.out.println(super.name);        //父类里面的
}
public class Fu {
    public Fu() {
        System.out.println("父类无参");
    }
}


public class Zi extends Fu{
    public Zi() {      
        //默认super();   调用父类构造器必须在子类的前面。
        //父类没有无参构造,则子类不能调用。
        System.out.println("子类无参");
    }
}


public class Demo {
    public static void main(String[] args) {
        Zi zi = new Zi();
    }

}


//结果:父类无参
        子类无参
  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法

super和this不同:

  1. this:本身调用者这个对象。本类的构造。
  2. super:代表父类这个对象。父类的构造。

  7、重写:(非静态)

        需要继承关系。

        修饰符范围可以扩大。子类修饰符可以比父类大。

        异常:范围可以缩小不能扩大。

        返回值可以不同,但是改变后的类型必须是修改前类型的子类型。

8、多态:(属性没有多态,方法的多态)

        有继承关系。

        子类重写父类方法。

        父类引用指向子类对象。

  1. 属性:编译看左边,执行看左边。
  2. 方法:编译看左边,执行看右边。

        不可以的有:

  1. static方法,属于类,不属于实例。
  2. final:常量。
  3. private:私有的。
//        Animal a = new Cat();  // 向上转型
//        a.eat();               // 调用的是 Cat 的 eat
//        Cat c = (Cat)a;        // 向下转型
//        c.work();        // 调用的是 Cat 的 work

猜你喜欢

转载自blog.csdn.net/qq_45688193/article/details/120785578