7.29~8.4 每周总结
本周的学习进度有点慢,简单学习并实践了Java的多态,接口。
多态的代码如下
package 多态; public class animal { public void show() { System.out.println("我是一个动物!"); } } package 多态; public class cat extends animal{ public void show() { System.out.println("我是一只猫!"); } } package 多态; public class dog extends animal{ public void show() { System.out.println("我是一只狗!"); } } package 多态; public class text { public static void main(String[] args) { //不使用多态 dog dog1=new dog(); dog1.show(); cat cat1=new cat(); cat1.show(); //使用多态 animal animal1=new dog(); animal1.show(); animal animal2=new cat(); animal2.show(); animal animal3=new animal(); animal3.show(); /*对象的转型 向上型 子类对象->父类对象 安全 父类对象->子类对象 不安全 */ //向下转型 安全 dog dog2=(dog) animal1; dog2.show(); // 向下转型 不安全的 cat cat2=(cat) animal1; cat2.show(); //向上转型 安全 animal animal4=cat1; animal4.show(); } }
对下转型有风险,运行结果如下:
对下转型的错误在执行的时候才能找到错误,在编写时不会发现错误。
接口类
package 多态; public interface animal1 { public void show1(); //接口在父类只有方法,在子类实现方法 } package 多态; public class cat1 implements animal1{ public void show1() { System.out.println("我是一只猫!"); } } package 多态; public class dog1 implements animal1{ public void show1() { System.out.println("我是一只狗!"); } } package 多态; public class text1 { public static void main(String[] args) { //向上转型 父类引用指向dog类的具体实现 animal1 animal2=new dog1(); animal2.show1(); //向下转型 dog1 dog2=(dog1) animal2; dog2.show1(); } }
运行结果如下:
对于接口,在父类时声明方法,在子类中进行具体实现。
其次:
匿名类
package 匿名内部类; public interface A { public void a(); } package 匿名内部类; public class B implements A{ @Override public void a() { // TODO Auto-generated method stub System.out.println("只使用一次的方法"); } } package 匿名内部类; public class text { public void Test(A a) { a.a(); } public static void main(String[] args) { text t=new text(); t.Test(new B()); //匿名内部类 t.Test(new A() { @Override public void a() { // TODO Auto-generated method stub //具体实现部分 System.out.println("hi!!"); }}); } }
结果截图:
Java 学习笔记:
我的手机 2019/8/4 9:58:09
syso ctrl+/ 输出语句
main ctrl+/ 主函数
多行注释快捷键
ctrl+shift+/
类内的输入 Scanner scaner=new Scanner(System·in);
int n=scanner.nextInt();
ctrl+shift+o 自动导包 println 换行
outer 类似goto 标签里面
forreach 遍历数组
for(j;arr(数组名))
System·out·println(j);
动态内存分布
int arr[] =new int[3]
静态初始化 int arr[]=int []{1,2,3}
不固定参数 String···hobbies
ctrl+d 删除一行
调用 静态方法 类名.方法 对象.方法
内部类 破坏类的基本结构,好处 方便使用外部类的属性
执行顺序 静态构造块 (只执行一次) 通用构造块 构造方法
String == 比较的是引用
name1.equals(name 2) 比较的是内容
字符串连接 string name="张" name+="三"
生成 get set 快捷方式 alt+shift+s
extends 继承
抽象类 abstract 子类实现方法 父类声明方法
final 常量 终止
static 静态
Java是单继承但可以有多个接口 先继承后接口
接口可以多继承