其他分享
首页 > 其他分享> > 20190801——抽象方法,数据类型深度学习

20190801——抽象方法,数据类型深度学习

作者:互联网

一、tips
1、类和类:单继承(是不是关系)
接口和类:多实现(是否拥有关系)
接口和接口:多继承

二、知识点

9.抽象类
定义:使用abstract修饰的类就是抽象类
使用abstract修饰的方法就是抽象方法,抽象方法没有方法体.
一般把父类定义为抽象类
public abstract class Bi {
//抽象方法
public abstract void xiezi();
}

9.1.抽象类和抽象方法之间的关系
抽象类中可以没有抽象方法
如果存在抽象方法,则这个类必须是一个抽象类

9.2.抽象类的一些特点
抽象类是可以没有抽象方法的。
抽象类不能实例化(创建对象)
构造函数不能是抽象方法
抽象方法不能是私有的
当子类继承一个抽象类的时候,必须要重写抽象类中所有的抽象方法,除非子类也是一个抽象类
9.3.
10.接口
10.1.接口的关键字是interface
Public interface 接口名称{
}
10.2.接口是一种特殊的抽象类,要求接口中的所有方法都是抽象的
不能有方法体。接口中的抽象方法可以不加abstract关键字修饰默认就是抽象的
接口方法的访问修饰符,默认就是public,如果写只能是public

如果接口中的方法是静态的,则需要为该方法提供方法的实现
如果接口中的方法是默认的,则需要为该方法提供方法的实现
接口中不能有构造函数
接口不能实例化
public interface MyInterface {
//接口中定义的方法默认就是抽象的没有方法体,且访问修饰符只有public 一种
public void test_method();
void test_mehtod2();
//错误,接口中不能有构造函数
//public MyInterface(){ }

public static void test_static_method(){
	System.out.println("这是接口中的一个静态方法");
}
public static void test_static_method2(){
	System.out.println("这是接口中的一个静态方法2");	
} 
public default void test_default_mehtod1(){
	System.out.println("这是接口中默认的方法");
}

}

10.3.接口中的属性
接口中的属性必须是常量 必须赋值
接口中的属性访问修饰符只有(public 和 默认) 默认的也是public
默认常量的命名规范的所有字母都大写

//若果在普通类中定义定义常量需要使用public static final三个修饰符修饰,三个修饰符顺序可以调换
Public static final String NAME=”BEIJING”;
Static public final String NAME =”BEIJIN”;
public interface Inter {
// 接口中的属性
public String NAME=“三生三世”;
String SEX =“女”;
public static final String ADDRESS=“BEIJIMNG”;
static public final String BIRTHDAY=“1987-11-11”;
//protected String address=“北京”;//错误
//定义的所有方法都是抽象的
public void say();
public void eat();
void drink(); //默认的也是public
//接口中的静态方法
static void sing(){
System.out.println(“ssssssssssssss”);
}
// private void test();//错误
// protected void abc();//错误
}

10.4.接口中的继承
10.4.1.接口继承接口是多继承关系
public interface Inter12 extends Inter1,Inter2{
}

10.4.2.类继承接口:一个类实现了多个接口
一个类可以实现多个接口,需要这个类重写接口中的所有抽象方法,如果多个父接口中存在同名方法,只需要重写其中的一个就可以。
抽象类可以实现多个接口
public class MyClass implements MyInterface,MyInterface2 {
//接口一中存在 test_mehto(),test_mehto2(),mehtod2() 三个抽象方法
//接口二中存在method2()一个抽象方法,
//则类中就可以重写三个即可
@Override
public void test_method() {
}
@Override
public void test_mehtod2() {
}
@Override
public void method2() {
}
}

10.4.3.类继承类 : 类和类之间是单继承,一个类的直接父类只能有一个
类和类之间是单继承( extend一类只能继承一个父类)
类和接口之间是多实现(implements一个类可以实现多个接口)
接口和接口之间是多继承(exetend一个接口可以继承多个接口)

类和类之间的继承称之为 is-a 的关系 (是不是的关系)
Student 和 person student 是不是 person 如果是 就是继承
类和接口之间的实现关系称之为 hs-a的关系(是否拥有的关系)
FlyInter(飞的接口) 和 鸟, 飞机 (飞机拥有飞的行为,鸟 拥有飞的行为)
接口只是行为的规范

10.5.接口继承以后的向上转型(也是可以实现多态的)
飞行的功能鸟可以有,飞机也可以有,如果想要看飞行的表演,我们就需要定义一个父接口,只要拥有接口的功能都可以进行飞行表演
//飞行接口的信息
public interface FlyInterface {
//可以飞的方法
void fly();
}
//小鸟实现类信息
public class Bird implements FlyInterface {
private String name;
public Bird(String name){
this.name = name;
}
@Override
public void fly() {
System.out.println(“天上的”+name+“在飞翔”);
}
public void zuochongzi(){
System.out.println(“捉虫子”);
}
}
//飞机实现类的信息你
public class Plane implements FlyInterface {
private String name;
public Plane(String name){
this.name = name;
}
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println(“驾驶员开着”+name+",在天上打仗");
}
public void tubaiyan(){
System.out.println(“吐白烟”);
}
}
//使用类的信息
public class BiaoYan {
public void kanbiaoyan(FlyInterface fly){
fly.fly();
}
}
//测试类的信息
public class Test {

public static void main(String[] args) {
	BiaoYan by = new BiaoYan(); 
	Bird bird=new Bird("鸽子");
	Plane plane = new Plane("J20"); 
	//多态
	by.kanbiaoyan(bird);
	by.kanbiaoyan(plane); 
	//测试向上转型 以后只能调用接口中定义的方法
	FlyInterface fly = bird;
	
	fly = plane;
} 

}

10.6.接口和抽象类实现多态的案例

11.Final 的讲解
final最终的 ,它可以修饰变量,方法和类
Final 在修饰的时候位置可以和访问修饰符互换
Final public int num = 20;
Public final int num =20;

11.1.使用final修饰变量
当一个变量被final修饰后,这个变量就称为常量
常量的特点:在声明的时候必须赋初始值,不可以先声明后赋值
Final int num = 22; 正确 final int num; num = 22;错误
常量一旦定义完毕,程序在整个执行过程中不能被重新赋值

如果final 修饰的是基本数据类型( final int num = 30;)该变量的值不能修改
如果fianl修饰的是引用数据类型(fint Student stu = new Student()

标签:String,对象,void,数据类型,接口,20190801,抽象,方法,public
来源: https://blog.csdn.net/NYX_UNI/article/details/98080826