Java面向对象内容

分为封装、继承、多态

封装:属性私有,get/set

public class Student {

    //名字
    private String name;
    //学号
    private int age;
    //性别
    public char sex;
	public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 120 || age < 0){
            System.out.println("error");
        }
        else {
            this.age = age;
        }
   }
  • extends的意思是扩展,子类是父类的扩展
  • Java中类只有单继承,没有多继承!
    • 继承是类和类的关系,两种类之间还有依赖、组合、聚合等关系
package oop.Demo05;

//Student 属于 Person
public class Student extends Person{
}
  • object类 是不声明也会用的,一种本地的类
  • super
  • 方法重写
ctrl+H

可以显示继承的关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fG7TYamX-1653570718986)(继承.assets/image-20220509224509293.png)]

super注意点:

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

this

代表对象不同:

  • this:本身调用的这个对象
  • super:代表父类对象的引用

前提:

  • this:没有继承也可以使用
  • super:只能在继承条件下才可以使用

构造方法:

  • this():本类的构造
  • super():父类的构造
//在子类进行无参构造时,父类必须要有无参构造或者无构造,不然就会报错
//要是父类有有参构造,子类就会报错
//下面这种情况就会报错
public class Person {
   	public Person(String a){
    }    
    }
    public class Student extends Person{
        public Student(){
        System.out.println("Student无参");
    }
    }
//
	public class Person {
   	public Person(){
    }    
    }
    public class Student extends Person{
        //该行会有一个默认的super();
        public Student(){
        System.out.println("Student无参");
    }
    }

重写:要有继承关系,子类重写父类的方法!

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大但不能缩小: public>protected>dewfault>private
  4. 抛出异常:范围可以被缩小但不能扩大:ClassNotFoundException --> Exception(大)

多态注意事项:

  1. 多态是方法的多态,属性没有多态

  2. 父类和子类,有联系 类型转换异常!ClassCastException!

  3. 存在条件: 继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son();

    1. static 方法,属于类,不属于实例

    2. final 常量

    3. private 方法

      上述三种都不能多态

instanceof 类型转换

  1. 父类引用指向子类的对象

  2. 把子类转换为父类,向上转换

  3. 把父类转换为子类,向下转换;需要强制转换才行

  4. 方便方法的调用,减少代码量

  5. public class Teacher extends Person{
        public static void main(String[] args) {
    
            // Object > String
            // Object > Person > Teacher
            // Object > Person > Student
            Object object = new Student();
    
            System.out.println(object instanceof Student);
            System.out.println(object instanceof Person);
            System.out.println(object instanceof Object);
            System.out.println(object instanceof Teacher);
    
            Person obj = new Student();
    
        }
    }
    

抽象类

public abstract class Action {

    //约束~有别的方法来实现
    //abstract 抽象方法 只有方法名字 没有方法实现
    public abstract void doSomething();

    //1. 不能new这个抽象类,只能靠子类去实现:约束
}

public class A extends Action{
    /@Override
    public void doSomething() {

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值