面向对象学习笔记

常见代码块应用

  • 局部代码块
    在方法中出现,限定变量的生命周期
  • 构造代码块(初始化块)
    在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,在调用构造方法前执行
  • 静态代码块
    在类中方法外出现,加上static修饰,用于给类初始化,在加载的时候就执行,只执行一次

练习代码

public class Demo1_Code {
    public static void main(String[] agrs) {
        {
            int a = 10;
            System.out.println(a);  // 局部代码块:限定变量的生命周期
        }
        Students s1 = new Students();  //调用空参构造
        s1.setName("张三");
        s1.setAge(27);
        System.out.println(s1.getName() + "---" + s1.getAge());
        System.out.println( "--————————————————————————————————————--" );
        Students s2 = new Students("李四",26);
        System.out.println(s2.getName()+"----"+s2.getAge());

    }
    static {   //静态代码块:类中方法外出现,加上static修饰,用于给类进行初始化,在加载的时候就执行,并且执行一次
        System.out.println("我是静态代码块");
    }
}
class Students {
    private String name;
    private int age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    {   //构造代码块(初始化块):在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,且在构造方法前执行
        System.out.println("我是构造代码块(初始化块)");
    }
    public Students() {          //空参构造
        System.out.println("空参构造");
    }
    public Students(String name, int age) {               //有参构造
        this.name = name;
        this.age = age;
        System.out.println("有参构造");
    }
}

面向对象学习笔记_第1张图片

面向对象——继承

继承:让类和类之间产生关系,子父类关系

继承的好处:

  1. 提高代码的复用性
  2. 提高代码的维护性
  3. 让类与类之间产生关系,是多态的前提

继承的弊端:类的耦合性增强了

开发的原则:高内聚,低耦合
耦合:类与类的关系
内聚:自己完成某件事的能力

Java中类的继承特点

  1. Java只支持单继承,不支持多继承。一个子类只能有一个父类
  2. Java支持多层继承(如grandpa—father—son)
  3. 如果想用这个体系的所有功能用最底层的类创建对象
  4. 如果想看这个体系的共性功能看最顶层的类

Java共性功能指的是Java语言中所有类都具备的一些基本功能,例如继承、封装、多态等,继承允许类之间的代码共享和重用;封装则使得类的内部实现细节对外部不可见,从而提高了代码的安全性和可维护性;而多态则使得不同的对象可以对同一消息作出不同的响应,从而提高了代码的灵活性和可扩展性。这些共性功能是Java语言的核心特性之一,也是Java语言在软件开发领域广泛应用的重要原因之一。

练习代码

public class extendsTest {
    public static void main(String[]agrs){
        cat c = new cat();
        c.setName("咪咪");
        c.setColor("白色");
        c.eat();
        System.out.println(c.getColor()+"的猫咪叫"+c.getName());
    }
}
class animal{
    private String name;
    private String color;

    public animal() {                                   //空参构造
    }

    public animal(String name, String color) {          //有参构造
        this.name = name;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }}
    class cat extends animal{//继承父类的属性,并添加特有属性
        public void eat(){
            System.out.println("猫吃鱼");
        }
    }
    class dog extends animal{}

面向对象学习笔记_第2张图片

继承需要注意

  1. 子类只能继承父类所有非私有的成员(成员方法和变量)
  2. 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
  3. 不要为了部分功能去继承

什么时候使用继承?
如果有两个类A、B,只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承

你可能感兴趣的:(学习,笔记,java)