前言:
目前我们对“java接口的继承方式”大体比较关注,我们都想要剖析一些“java接口的继承方式”的相关内容。那么小编也在网摘上网罗了一些有关“java接口的继承方式””的相关知识,希望姐妹们能喜欢,咱们一起来学习一下吧!前言
大家好,我是 Vic,今天给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢
什么是接口(interface)
接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象
interface Student{public void read();public void write();}class ChineseStudent implements Student{//复写public void read(){System.out.println("read");}public void write(){System.out.println("write");}}class Test{public static void main(String args[]){ChineseStudent chinesestudent = new ChineseStudent();Student student = chinesestudent;student.read();student.write();}}
实现接口用implements关键字,一个接口可以实现多个接口,一个接口可以继承多个接口interface Student{public void read();public void write();}interface Teacher{public void teach();public void test();}class Person implements Student,Teacher{public void read(){System.out.println("read"):}public void write(){System.out.println("write");}public void teach(){System.out.println("teach"):}public void test(){System.out.println("test"):}}class Test{public static void main(String args[]){Person person = new Person();Student student = person;student.read();student.write();Teacher teacher = person;teacher.teach();teacher.close();}}
swith( char byte short int)只允许四种类型
public class Test{public static void main(String args[]){ int score = 90; if(score > 85 && score <= 100){ System.out.println("成绩为优");} else if(score > 75 && score <= 85){ System.out.println("成绩为良");} else if(score > 60 && score <= 75){ System.out.println("成绩为中");} else if(score <= 60 && score >= 0){ System.out.println("成绩为差");} else if(score > 100 || score < 0){ System.out.println("成绩不在正常的范围之内");}}}
对象就是引用数据类型
class Test{public static void main(String args[]){Dog d = new Dog();d.name="哈哈";d.age=2;d.jump();System.out.println("名字是"+d.name);}}
重载的表达
class A{void funA(){System.out.println("没有参数的funA函数");}void funA(int i){System.out.println("有参数的funA函数");}void funA(int i,double d){System.out.println("拥有两个参数的funA函数");}}
什么是继承
在现实世界当中,继承就是儿子得到老子的东西,在面向对象的世界当中,继承就是一个类得到了另一个类当中的成员变量和成员方法
Java只支持单继承,不允许多继承,继承是为了减少重复代码
使用super调用父类构造函数的方法
class Person{String name;int age;Person(){System.out.prinltn("Person的无参数构造函数");}Person(String name,int age){ this.name=name; this.age=age;System.out.println("Person有参数的构造函数");}void eat(){System.out.println("定义吃饭的方法");}}
class Student extends Person{//子类继承父类Student(){ //父类super();System.out.println("Student的无参数构造函数");}Student(String name,int age,int id){ super(name,age); this.id=id;}}
在Java中的继承,其实就是继承全部属性和方法(除了构造方法),除了private修饰的变量或者方法,子类无法进行访问
什么是复写
具有父子关系的两个类中,父类和子类各有一个函数,这两个函数的定义(返回值类型,函数名,参数列表)完全相同
对象的转型(多态性地体现)
父类引用指向子类对象,同一个类型,调用同一个方法,却能呈现不同的状态
什么是向上转型:
向上转型就是将子类的对象赋值给父类的引用。
什么是向下转型:
向下转型就是将父类的对象赋值给子类的引用。
Student s1 = new Student();Person p = s1;Student s2 = (Student)p;
类的多态
父类引用指向子类对象
调用的方法有重写
所谓的转型
类型转换指:
把一个引用所指向的对象的类型,转换为另一个引用的类型
没有继承关系的类型进行转换,一定会失败
了解Object类
Object类是所有类的父类
Object类提供一个toString方法,返回当前对象的字符串表达
equals() 判断两个对象的内容是否相同
详解final
final可以修饰类(该类不能够被继承),成员变量(修饰基本类型变量,该变量只有一次赋值机会,修饰引用,该引用只有一次指向对象的机会),成员方法(不能够被重写)
String类是public final class String,不能被继承
什么是抽象函数
没有函数体的函数被称为抽象函数
什么是抽象类
使用abstract定义的类称为抽象类
抽象类不能够生成对象
抽象类不能实例化,继承抽象类,那么该类必须为抽象类
一个类被声明为抽象类,不能够被直接实例化
abstract class Person{abstract void eat();}class Chinese extends Person{void eat(){System.out.pritln("hhh");}}class Test{public static void main(String args[]){Person p = new Chinese();p.eat();}}
abstract class Person{Person(){System.out.println("Person没有参数的构造函数");}Person(String name,String age){ this.name=name; this.age=age;}String name;int age;void introduce(){System.out.println("我的名字是"+name+",我的年龄是"+age);}abstract void eat();}}class Chinese extends Person{String address;Chinese(){ super();System.out.println("Chinese的构造函数");}Chinese(String name,int age,String address){ super(name,age); this.address=address;} void eat(){ //复写 System.out.println("吃饭");}}class Test{public static void main(String args[]){Person p = new Chinese();p.eat();}}
如何生成内部类的对象
class Test{public static void main(String args[]){A a = new A();A.B b = new A().new B(); //或者A.B b = a.new B();}}class A{int i;class B{int j; int funB(){ int result = i+j; return result;}}}class Test{public static void main(String args[]){A a = new A();A.B b = a.new B();a.i=3;a.j=1;int result = b.funB();System.out.println(result);}}class A{int i;class B{int j; int funB(){ int result = A.this.i+this.j; return result;}}}
内部类
内部类有 非静态,静态,匿名类
语法: new 外部类().new 内部类()
匿名内部类
interfacce A{public void doSomething();}class B{public void fun(A a){System.out.println("B函数");a.doSomething();}}class Work implements A{public void doSomething(){System.out.println("doSomething");}}class Test{public static void main(String args[]){Work work = new Work();A a = work;B b = new B();b.fun(a);}}
class Test{public static void main(String args[]){B b = new B();b.fun(new A(){ public void doSomething(){ System.out.println("匿名内部类"); }});}}
总结
本文讲了详细讲解Java中的接口与继承,如果您还有更好地理解,欢迎沟通定位:分享 Android&Java知识点,有兴趣可以继续关注
标签: #java接口的继承方式