本周的学习进度有点慢,简单学习并实践了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是单继承但可以有多个接口 先继承后接口
接口可以多继承