面向对象

  • 什么是面向对象?

    • 以类的形式组织代码,以对象的形式封装数据

构造器详解

  • 和类名相同,无返回值

  • 默认有一个无参构造器

  • new本质调用构造方法,初始化对象的值

  • 有参构造:

    public class Person{
        String name;
        
        // 一旦定义了有参构造,无参构造必须显示定义
        public Person(){}
        
        public Person(String name){
    		this.name = name;      // this.name代类的name,构造器中name代表所传参数
    	}
    }
    
    

在这里插入图片描述

封装

  • 高内聚,低耦合
  • 属性私有,get/set(字段不能是共有的,否则客户端会随意修改。使用get set方法替换共有字段)
public class Student{
	// 属性私有
	private String name;
	// get/set方法
    public String getName(){
        return this.name;
	}
    public void setName(String name){
        this.name = name;
    }
}
  • 提高程序的安全性,可维护性
  • 隐藏方法实现细节,统一接口

继承

  • 本质是对某一批类的抽象

  • super注意:

    • super调用父类的构造方法,必须在构造方法的第一个
    • super只能出现在子类的方法或构造方法中
    • super和this不能同时调用构造方法
    • 默认调用父类的无参构造
  • 重写:子类重写父类的方法

    • 非静态方法
    • 方法名、参数列表必须相同
    • 修饰符范围可以扩大但不能缩小
    • 异常的范围可以缩小但不能扩大

    重写:子类和父类的方法必须一致,方法体不同。

    重载:同一个类中方法名相同,参数列表不同。

多态

  • 多态是方法的多态

  • 父类和子类有联系。类型转换异常:ClassCastException

  • 存在条件:继承关系;方法需要重写;父类引用指向子类对象

    // 能调用的方法都是自己或者父类的
    Student s1 = new Student();
    // 父类调用子类的对象,不能调用子类独有的方法
    Person s2 = new Student();
    
    // 对象能执行哪些方法,主要看左侧的类型,无关右边new的类型
    
  • static:

    • static方法在加载类的时候就加载了,先于其他方法
    public class Person{
        // 2:赋初值
        {
            System.out.println("匿名代码块");
        }
        // 1:只执行一次
        static{
            System.out.println("静态代码块");
        }
        // 3
        public Person(){
            System.out.println("构造方法");
        }
    }
    
    输出结果:
        静态代码块
        匿名代码块
        构造方法
    

抽象类(is-a)

  • 子类继承了抽象类,要实现抽象类的所有抽象方法
  • 抽象类不能被实例化,不能new一个抽象类,只能子类来实现
  • 抽象类可以写普通方法
  • 抽象方法必须在抽象类中

接口 Interface(like-a)

  • 只有规范(抽象方法),没有方法,不能被实例化
  • 接口中所有定义的方法都是抽象的。 public abstract
  • 接口中所有定义的常量都是抽象的。 public static final
  • 具体的方法在接口的实现类中完成。实现了类的接口,需要重写接口中的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值