5、Java的面向对象

Java的面向对象

属性加方法=类

方法的定义:修饰符+返回值类型+方法名(变量)


封装

属性私有、get、set方法:

1、提高程序的安全性,保护数据

2、隐藏代码的实现细节

3、统一接口

4、提高系统的可维护性

方法重载:就是同一个类,有多个方法,方法名一样,参数不一样,根据传入的形参不同,调用不同的方法

构造方法:也叫构造器,也是一种方法,可以重载,方法名与类名相同,不用写返回值

构造器是在创建此类的对象的时候就会调用的,作用是初始化类的对象。 如果没有为类写构造器,JAVA虚拟机自动为类添加一个无参数的构造器,不会显示。


继承

类跟类的关系

子类跟父类用extands

private:私有

public:公共

protected:保护

default:默认

在Java中,所有的类,都默认直接或间接继承与object类

Java只有单继承,没有多继承


super

注意点:

1、super调用父类的构造方法,必须在构造方法的第一个

2、super必须只能出现在子类的方法或者构造方法中

3、super和this不能同时调用构造方法

对比this:

代表的对象不同:

​ this:本身调用这个对象

​ super:对父类对象的调用

前提:

​ this:没继承也可以使用

​ super:只能在继承条件下可以使用

构造方法:

​ this():本类的构造

​ super:父类的构造


方法的重写

重写都是方法的重写

//类A继承于类B 当类A和类B同时定义了名字相同,参数相同的静态方法static test()时:方法的调用只和左边定义的数据类型有关
//当删掉static后,变为非静态后方法重写
A a=new A();
a.test();

//父类的引用可以指向子类
B b=new A();//当没有static后,子类重写了父类的方法
b.test();

@Override:注解(重写)

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

1、方法名必须相同

2、参数列表必须相同

3、修饰符:范围可以扩大但不能缩小:public>protected>default>private

4、抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException–>Exception(大)

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

static、final、private:无法被重写

为什么需要重写:

父类的功能,子类不一定需要,或者不一定满足


多态

Student s1=new Student();
Object s2=new Student();
//对象的数据类型与左侧数据类型有关,可以为父类可以为子类。为父类时,对象只可调用父类中的方法和属性;为子类时,当对象调用的方法在子类中被重写了,则调用子类中的方法,如果子类中没有该方法,则调用父类中的方法。

数据类型转换

instanceof(类型转换)引用类型,判断对象是什么类型(判断是否有父子类关系)

当创建对象时引用对象与instanceof右边的类型没有关系时,编译报错

当创建对象时实际类型对象与instanceof右边的类型没有父子、继承关系时,结果为false

创建对象,看右边。实际使用,看左边。

高转低:

父类 对象名=new 子类()

低转高:

子类 对象名=(父类)需要转型的对象名


static

加了static关键字叫静态的变量

静态变量可以直接用类名调用

匿名对象和类一起运行,先运行匿名代码块再运行构造方法

静态代码块只运行一次


抽象类

abstract可以修饰抽象类和对象——抽象类、抽象方法

约束抽象方法之后,抽象方法只有名字,没有实现

public abstract class Action{
    //抽象方法,只有方法名字,没有方法的实现
    public abstract void doSomething();
}

//抽象类的所有方法,继承了它的子类,都必须要实现它的方法
public class A extends Action{
    @Override
    public void doSomething(){
    }
}
//抽象类不能new,只能靠子类去实现

extands 单继承

接口可以多继承


接口

只有规范,自己无法写方法,接口没有构造方法

关键字:interface

implements可以实现多个接口

public interface Demo09 {
    //定义约束
    //接口中定义的变量都是常量的,默认:静态常量
    int AGE=99;
    //接口中定义的方法都是抽象的,默认:public abstract
    void add(String name);
}

public interface Time {
    void timer();
}
//多继承,AppLication这个类实现两个接口
public class AppLication implements Demo09,Time{
    @Override
    public void add(String name) {
    }
    @Override
    public void timer() {
    }
}

内部类

内部类可以获得外部类的私有属性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值