Day13
package com.oop.demo06;
public class Person {
public void run(){
System.out.println("run");
}
}
/*
多态注意事项
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 类型转换异常! ClassCastException!
3.存在条件: 继承条件,方法需要重写,父类引用指向子类对象! Father f1 = new Son();
1.static 方法:属于类,它不属于实例
2.final 常量:
3.private 方法:
//一个对象的实际类型是确定的
//new Student();
//new Person();
//可以指向的引用类型就不确定了:父类的引用指向子类
//Student 能调用的方法都是自己的或者继承父亲的!
Student s1 = new Student();
//Person 父亲型,可以指向子类,但是不能调用子类独有的方法
Person s2 = new Student();
Object s3 = new Student();
//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
s2.run();//子类重写了父类的方法,执行子类的方法
s1.run();
s1.ear();
((Student) s2).ear();
*/
package com.oop.demo06;
public class Student extends Person{
public void go(){
System.out.println("go");
}
}
/*
//Object > String
//Object > Person > Teacher
//Object > Person > Student
Object object = new Student();
//System.out.println(X instanceof Y);//能不能编译通过
System.out.println(object instanceof Student);
System.out.println(object instanceof Person);
System.out.println(object instanceof Object);
System.out.println(object instanceof Teacher);
System.out.println(object instanceof String);
System.out.println("===========================");
Person person = new Student();
System.out.println(person instanceof Student);
System.out.println(person instanceof Person);
System.out.println(person instanceof Object);
System.out.println(person instanceof Teacher);
//System.out.println(person instanceof String);
System.out.println("===========================");
Student student = new Student();
System.out.println(student instanceof Student);
System.out.println(student instanceof Person);
System.out.println(student instanceof Object);
//System.out.println(student instanceof Teacher);
//System.out.println(person instanceof String);
*/
package com.oop.demo06;
public class Teacher extends Person{
}
public class Application {
public static void main(String[] args) {
//类型之间的转换: 父 子
//高 低
Person student = new Student();
//子类转换为父类,可能丢失自己的本来的一些方法!
//student将这个对象转换为Student类型,我们就可以使用Student类型的方法了!
((Student)student).go();
Student student1 = (Student) student;
Person person = student;
}
}
/*
1.父类引用指向子类的对象
2.把子类转换为父类,向上转型;
3.把子类转换为父类,向下转型; 强制转换
4.方便方法的调用,减少重复的代码!简洁
抽象: 封装,继承,多态! 抽象类,接口
*/
package com.oop.demo07;
//static :
public class Student extends Person{
private static int age;//静态的变量 多线程!
private double score;//非静态的变量
public void run(){
}
public static void go(){
}
public static void main(String[] args) {
new Student().run();
Student.go();
}
}
package com.oop.demo07;
public class Person {
//2 : 赋初始值
{
//代码块(匿名代码块)
System.out.println("匿名代码块");
}
//1 : 只执行一次~
static {
//静态代码块
System.out.println("静态代码块");
}
//3
public Person(){
System.out.println("构造器方法");
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("=======");
Person person2 = new Person();
}
}
package com.oop.demo07;
//静态导入包~
import static java.lang.Math.PI;
import static java.lang.Math.random;
public class Test {
public static void main(String[] args) {
System.out.println(random());
System.out.println(PI);
}
}
package com.oop.demo08;
//abstract 抽象类:extends : 单继承~ 接口可以多继承
public abstract class Action {
//约束~有人帮我们实现~
//abstract , 抽象方法,只有方法名,没有方法的实现!
public abstract void doSomething();
//1.不能new这个抽象类,只能靠子类去实现它;约束
//2.抽象类中可以写普通方法
//3.抽象方法必须在抽象类中
//抽象的抽象:约束~
}
package com.oop.demo08;
//抽象类的所有方法,继承了它的子类,都必须要实现它的方法~ 除非~
public class A extends Action{
public void doSomething(){
}
}
package com.oop.demo09;
//抽象的思维~ java 结构师~
//interface 定义的关键字, 接口都有实现类
public interface UserService {
//常量~ public static final
int AGE=99;
//接口中的所有定义其实都是抽象的 public abstract
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
package com.oop.demo09;
//出现了:extends~
//类 可以实现接口implements 接口
//实现了接口的类,就需要重写接口中的方法~
//多继承~利用接口实现多继承
public class UserServicelmpl implements UserService,TimeService{
package com.oop.demo09;
public interface TimeService {
void timer();
}
作用:
1.约束
2.定义一些方法,让不同的人实现~
3.public abstract
4.public static final
5.接口不能被实例化~,接口中没有构造方法~
6.implements 可以实现多个接口
7.必须要重写接口中的方法
8.总结博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)