.class(一个java文件被编译后自动生成的文件)是一个二进制文件,仅供计算机查看,我们无法进行查看。它一般被编译后会放在workplace中对应项目的bin文件夹里面。
.class(一个java文件被编译后自动生成的文件)是一个二进制文件,仅供计算机查看,我们无法进行查看。它一般被编译后会放在workplace中对应项目的bin文件夹里面。
可以把一个 匿名内部类的对象当做一个参数传递给一个方法。---02:31
可以借助匿名内部类调用一个静态方法(针对视频目前是静态),日常任何方法都可以。
直接在匿名内部类里面调用抽象类的构造方法。
匿名内部类对于只调用一次类的而言有效防止代码多而累赘。---08:38
3:39----
因为交通工具的行驶方式不一样,所以把交通方式transit定义为抽象类abstract,所以vehicle这个类也要定义为abstract。
接口是完全抽象化的类,里面没与完整的方法。我们可以定义一个功能,其他类可以实现这个接口来拥有这个功能。
接口可以被实现,但是不可以被继承。
接口可以被抽象类实现、也可以被具体类实现。因为抽象类含有抽象方法,所以它只需要选择性的选择去实现接口的方法,而具体类必须实现抽象类的所有方法。
A2 b=new B();
//b是由A2声明出来的,A2只有eat和work方法。即使创建出来的B拥有method1等方法,但是无法得到实现。但是可以对B进行强制转换:((B)b).method1();
因为B是子类,我们可以说子类是父类(例如:人是父类,老师是子类,我们可以说老师是人,但是不可以说人就是老师)。所以,可以强制性转换。
接口:接口里面只能包含抽象方法(接口是完全抽象化的类,里面没有完整的方法)。
通过接口定义一个功能,其他类可以实现这个接口来拥有这个功能。(实现这个接口内的方法)
接口无法得到继承;并且实现接口的时候需要定义类去实现。
可以利用接口创建一个对象,如下图:
1.因为没有构造方法,所以判断该类为一个不完整的类。进而,不可以对该类的变量进行赋值。 07:00
2.因为大家work的内容不一样,但是大家都要work,所以定义一个抽象方法:public abstract void work(),所以当前类需要改成抽象类。
3.子类可以实现父类中的某个抽象方法。
4.抽象类什么时候运用呢?
当某个类中需要抽象方法的时。
1.abstact void method1();//抽象方法
2.当一个类包含一个抽象方法时,必须定义该类为抽象类。
3.抽象类不能构造对象,因为里面的方法不完整。
4.抽象类可以被继承,他的子类可以把抽象类的方法写完整,进而构造独对象。07:31
init:初始化
因为init为初始化的意思,所以当teaher类继承父类person的时候,需要用init(父类的成员变量)进行表示。04分10秒
public Teacher (String title,String course,String className){init(title,course,className)};
public (String name,int age,char gender,String birthday,String title,String course,String className)......
-----------------------
利用父类person来声明,利用子类student来构造。17:24
Person p=new null
p=new Student("东东",18,'男',"2018-8-7",2,5);
1.内部类可以访问外部类所有成员不管是public还是private。
2.因为外部类存在多个内部类,所以外部类不可以访问内部类的成员。
1.内部类比较特殊,内部类的作用域有四个,所以可以访问所有权限修饰符,甚至还可以用static来修饰。
2.外部类可以定义静态成员,但是内部类不可以定义静态成员。
3.Outer$inner.class:表示一个内部类的class文件,不过用$符号说明该内部类属于外部类里面的一个类
当一个成员是默认修饰符(default)时,他是可以在同一个包下的任意类对该成员进行访问。如视频4分9秒:因为没有定义包,所以两个类都处于系统的默认包内。
假如是不同包,用default修饰符是无法访问该无任何修饰符的cheng yuan。
public可以用于包内外
default只可以用于包内
类的修饰只能用:public、default
成员的修饰都能用:public、protected、default、private
private成员(只能在同一个类里面访问)
public成员(所有地方都可以访问)
在别的.java文件中要想引入别的类中的方法时,需要import.引入该类的所属包的完整命名.引入的该类完整命名,接着调用该方法是,因为目前视频所讲的是main方法,故需要在调用该方法是,代码格式要求为:该类完整名(null);因为diao yongmain方法需要传递参数,且是一个数组,数组为引入数据类型,可以传递null进去
不同包里面可以包含同名的类,通过包来区分。
假如要用到scanner这个类,因为这个类属于java.util这个包里面,所以要对java.until这个包进行引用:import java.util.Scanner。
14分~14分24秒-----若在一个类前面定义一个包,那么编译&运行的时候不可以按照常规方式进行编译&运行:
方法一:若代码是:package com.sikiedu.person,则在当前目录创建一个com名文件夹,接着在内创建一个sikiedu文件夹,接着在内创建一个person文件夹,最后把.java文件放进去,最后进行常规编译&运行即可;
方法二:编译命令行:
javac -d. ExtendsDemo1.java
运行命令行:
java com.sikiedu.person.ExtendsDemo1
重载(overload):
同一个类:
要求、、方法名一样;参数不一样;返回值不要求
重写(override):
子类父类:
参数、返回值、方法名都要一样
final(类、方法、变量)
final类:这个类不能被继承
final方法:表示这个方法不能被子类重写
public final void eat(){ }
final常量(变量):对于一个常量而言,该常量只能被赋值一次,变量也是。
final int pi;
pi=2134;-----对的
pi=324;-----对pi进行二次赋值,错误
or
final int pi=2134;-----对的
pi=324;-----对pi进行二次赋值,cuo wu
若把某方法从public改成private,用另一public方法可以把某方法重写成public并进行对该某方法进行调用;但是private方法不可以对public方法进行重写。
1.当我们没有显示调用父类里面的构造方法的时候(即没有调用super()),默认会调用父类里面的无参构造方法,对父类的属性进行初始化。
2.可以用this调用同类里面其他方法:
1.java不支持多继承,但是可以支持多层继承。
2.子类和父类里面有同名的变量,就近原则进行赋值(this super)
3.(前提:不重名)通过this访问当前类里面的成员;通过super访问父类里面的成员。
可以通过super访问父类里面的变量、方法和构造方法。
用super()可以在子类调用父类进行对父类各参数值初始化。
super();//调用父类里面的wu can gou zao fang fa