java基础第五讲——访问修饰符、面向对象三大特征、包装类、关键字

[目录]

访问修饰符
面向对象的三大特征
包装类
几个关键字

访问修饰符

public
protected
default 默认的
private 只能在本类中访问

面向对象的三大特征

封装
继承
多态

封装

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
通过set get方法(一般是成对存在的)
加入限制条件

    public String getName() {
        return name;
    }

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

    public int getAge() {//加入限制条件
        if (age > 50) {
            System.out.println("超出上学年龄");
            return age;
        } else if (age < 3) {
            System.out.println("不足上学年龄");
            return age;
        }
        return age;
    }

    public void setAge(int age) {
        this.age = age;
        if (age > 50) {
            System.out.println("超出上学年龄");
        } else if (age < 3) {
            System.out.println("不足上学年龄");
        }
    }

继承

关键字extends
super在子类中
super.调用父类属性或方法
super(参数)调用父类有参构造器 注意:只能在子类的构造器中使用,必须在构造器的第一行。
在调用子类之前需要先调用父类(例:父类创建一个有参构造器)

对象的初始化顺序
1.首先是父类的属性
2.父类的构造器
3.子类的属性
4.子类的构造器

package com.pb.javafeaturetest_fengzhuang;
/**
 * 父类Person
 * @author Administrator
 *
 */
public class Person {
    private String sex;
    public int age = 10;
    public String hair;
    public Person() {//父类的无参构造器
        System.out.println(age);
        System.out.println("调用父类构造器");
    }
    public void sleep(){
        System.out.println("正在家睡觉...");
    }
    private void eat(){
        System.out.println("在吃饭...");
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getHair() {
        return hair;
    }
    public void setHair(String hair) {
        this.hair = hair;
    }
}

package com.pb.javafeaturetest_fengzhuang;
/**
 * Student子类  继承于Person
 * @author Administrator
 *
 */
public class Student extends Person {
    public int age = 20;
    private int id;
    private String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Student() {//子类无参构造器
        System.out.println(age);
        System.out.println("调用子类构造器");
    }
    public static int add(int a,int b) {//共有的方法 
        return a+b;
    }
}
    //测试类
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("King");
        student.sleep();
        student.study();
    }
}

结果
这里写图片描述

多态

方法的覆盖(复写):
@Override
子类覆盖父类的方法
1.方法名称相同
2.返回值类型相同
3.参数列表相同
4.访问修饰符不能比父类更加严格

    //父类中的sleep()方法
    public void sleep(){
        System.out.println("正在家睡觉...");
    }
    //子类复写父类的sleep()方法
    public void sleep() {
        System.out.println("在学校睡觉");
    }

方法的重载:
方法名相同 参数列表不同
无关访问修饰符和返回值

//voice()方法重载
public class Dog extends Aniaml {
    @Override // 表示下边的方法是复写方法
    public void voice() {
        System.out.println("汪汪汪~");
    }
    void voice(String name){
        System.out.println("看见"+name+"立刻咬");
    }
    public String voice(int age){
        return  "看见年轻的就咬";
    }
}

结果
这里写图片描述

Integer
Boolean
Byte
Character
Double

关键字

this 在方法中指的是调用该方法的对象
this在构造器中调用本类的有参构造器,必须写在第一行

instanceof 判断是否为一个类的对象

    // 判断animal2是否为Dog的对象
    if (animal2 instanceof Dog) {
        // 强制类型转换
        ((Dog) animal2).voice(18);
        System.out.println(((Dog) animal2).voice(18));
    }

static
共有的属性,类的属性。
共有属性调用时 类名.属性名
共有的方法,类的方法。共有方法调用时 类名.方法名

    //Student中定义的静态属性
    public static String address = "北京";// 静态修饰 static 共有的属性
    //Student中定义的静态方法
    public static int add(int a, int b) {// 共有的方法
        return a + b;
    }

    //测试类中
    System.out.println(Student.address);// 静态属性用 类名.属性名
    Student.add(5, 2);// 静态方法用 类名.方法名 方法中只能调用静态属性
    System.out.println(Student.add(5, 2));

final
修饰的类表示最终的类 不允许被继承
修饰的方法表示最终的方法 不允许被重写(复写)
修饰的变量表示常量 不允许被修改

常量的命名规则:全部大写,中间用下划线隔开 例EYE_NUM

Object:查看API
toString()打印地址
hashCode()
equals()重写

@Override
public boolean equals(Object obj) {
    if (obj != null) {
        if (obj instanceof Student) {
            boolean isTheSameId = ((Student) obj).id == this.id;
            return true;
        }
    }
    return false;
}
public class Test {
    public static void main(String[] args) {
        Student zhangsan = new Student();
        zhangsan.setId(123);
        zhangsan.setName("张三");
        Student zhangsi = new Student();
        zhangsi.setId(123);
        zhangsi.setName("张思");
        System.out.println(zhangsan.equals(zhangsi));
    }
}

结果
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值