05Java面向对象的编程OOP

您所在的位置:网站首页 java接口回调的概念和作用 05Java面向对象的编程OOP

05Java面向对象的编程OOP

#05Java面向对象的编程OOP| 来源: 网络整理| 查看: 265

(备案于2023年1月6日,作用:05抽象与接口,备案号:2301060505)

42.抽象(abstract)

定义:可以将共性行为(方法)抽取到父类,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法。

43.抽象的特点

43.1抽象(abstract)不能修饰变量;

43.2抽象方法:抽象方法没有方法体。

43.3抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类。

43.4抽象类中可以有属性,方法,构造方法,可以没有抽象方法,但是有抽象方法的类一定是抽象类。

43.5如果抽象类中有抽象方法,那么抽象类的子类,要么重写父类中所有的抽象方法,要么是抽象类(不推荐)。

案例:

package eNew;

//父类

//43.3抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类。

abstract class Father{

//43.4抽象类中可以有属性,方法,构造方法,可以没有抽象方法,但是有抽象方法的类一定是抽象类。

private String name;

public Father() {

}

public Father(String name) {

this.name = name;

}

//43.2抽象方法:抽象方法没有方法体。

public abstract void skill();

}

//子类1

//43.5如果抽象类中有抽象方法,那么抽象类的子类,要么重写父类中所有的抽象方法,要么是抽象类(不推荐)。

class Son1 extends Father{

@Override

public void skill() {

System.out.println("砍树");

}

}

//子类2

class Son2 extends Father{

@Override

public void skill() {

System.out.println("除草");

}

}

public class Demo01 {

public static void main(String[] args) {

Son1 s1 = new Son1();

Son2 s2 = new Son2();

s1.skill();

s2.skill();

}

}

44.final,static和abstract的区别

45.接口(implement)

定义:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

对比。

46.接口(implement)的特点

46.1接口是完全抽象的(无法实例化)。(抽象类是半抽象。)或者也可以说接口是特殊的抽象类。

46.2接口支持多继承,一个接口可以继承多个接口。

46.3接口中只包含两部分内容:

一部分是:常量。

一部分是:抽象方法。

46.4接口中所有的元素都是public修饰的。(都是公开的)

46.5接口中的常量的public static final可以省略,且变量必须赋值。

46.6接口中的抽象方法定义时:public abstract修饰符可以省略;,所以接口中的方法不能有方法体。

46.7当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖、重写)(和继承抽象类一样)。

46.8一个类可以既实现接口,有继承父类;类和类之间叫做继承(extends),类和接口之间叫做实现(implements);其中,extends关键字在前,implements 关键字在后

案例:

package eNew;

//接口1

//46.1接口是完全抽象的(无法实例化)。(抽象类是半抽象。)或者也可以说接口是特殊的抽象类。

//46.3接口中只包含两部分内容:一部分是:常量。一部分是:抽象方法。

interface Socket1{

//46.5接口中的常量的public static final可以省略,且变量必须赋值。

String name = "李";

public static final String sex = "男";

//private int age = 10;报错

//46.6接口中的抽象方法定义时:public abstract修饰符可以省略;,所以接口中的方法不能有方法体。

void action();

public abstract void like();

//public void info(){}报错

}

interface Socket2{

void skill();

}

class FatherNew{}

//46.2接口支持多继承,一个接口可以继承多个接口。

//46.7当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖、重写)(和继承抽象类一样)。

//46.8一个类可以既实现接口,有继承父类;类和类之间叫做继承(extends),类和接口之间叫做实现(implements);其中,extends关键字在前,implements 关键字在后

class SonNew extends FatherNew implements Socket1,Socket2{

@Override

public void action() {

}

@Override

public void like() {

}

@Override

public void skill() {

}

}

47.接口比抽象类更好的特性

47.1.可以多继承

47.2.设计和实现完全分离

47.3.更自然的使用多态

47.4.更容易搭建程序框架

47.5.更容易更换实现

48.抽象类与接口的异同(相同点和不同点)?

相同点:

1.抽象类和接口都不能实例化对象,但是可以定义抽象类和接口类型的引用;

2.继承抽象类和实现接口都要对其中的抽象方法全部实现;

不同点:

1.接口比抽象类更加抽象,抽象类中可以定义构造方法(构造器),可以有抽象方法和具体方法,而接口中的方法全部都是抽象方法(接口中也可以没有方法,这样的接口称为空接口)

2.抽象类中的方法可以是private,protected,public,接口全部都是public

3.抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量(final)

4.有抽象方法的类必须声明为抽象类,而抽象方法未必要有抽象方法

49.OOP设计原则:类与类之间的关系

49.1继承关系,extends

49.2关联关系,一对多,多对多

49.3实现关系

49.4依赖关系

49.5聚合关系

49.6组合关系

https://blog.csdn.net/weixin_43149049/article/details/107488251?ops_request_misc=&request_id=&biz_id=102&utm_term=类与类之间的关系&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-107488251.nonecase&spm=1018.2226.3001.4187

作业:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3