package com.oop.demo07;public class Person { //1 赋初值 { System.out.println("匿名代码块"); //代码块(匿名代码块) } //2 static代码块只执行一次 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;//staticpublic class Student { private static int age;//静态的变量 多线程 private double score;//非静态的变量 public void run(){ } public static void go(){ } public static void main(String[] args) { Student s1= new Student(); System.out.println(Student.age);//静态变量直接使用类名访问变量 System.out.println(s1.score); System.out.println(s1.age); Student.go(); new Student().run(); }}
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());//random随机数 System.out.println(PI); }}
package com.oop.demo08;//抽象类的所有方法,继承了它的子类,都必须实它的方法public class A extends Action{ @Override public void doSomething() { }}
package com.oop.demo08;//abstract 抽象类:类 单继承 多继承(接口)public abstract class Action { //约束 有人帮我们实现 //abstract 抽象方法只有方法的名字,没有方法的实现(方法体) public abstract void doSomething(); //1、不能new这个抽象类,只能靠子类去实现它:约束! //2、抽象类可以写普通方法 //3、抽象方法必须在抽象类中 //抽象的抽象:约束 //思考题?抽象类是否存在构造器 //存在构造器 //抽象类存在的意义:节省代码,提升开发效率}//接口
package com.oop.demo09;public interface TimeService { void timer();}
package com.oop.demo09;//抽象的思维//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 UserServiceImpl implements UserService,TimeService{ @Override public void add(String name) { } @Override public void delete(String name) { } @Override public void update(String name) { } @Override public void query(String name) { } @Override public void timer() { }}
接口作用: 1、约束 2、定义一些方法,让不同的人实现 3、方法都是 public abstract 4、常量都为:public static final 5、接口不能被实例化,接口中没有构造方法 6、implements可以实现多个接口 7、必须要重写接口中的方法 8、总结博客//内部类
package com.oop.demo10;public class Outer { private int id=10; public void out(){ System.out.println("这是外部类的方法"); } //内部类可以获得外部类的私有方法以及私有属性 public class Inter{ public void in(){ System.out.println("这是内部类的方法"); } public void getID(){ System.out.println(id); } }}
package com.oop;import com.oop.demo06.Person;import com.oop.demo06.Student;import com.oop.demo06.Teacher;import com.oop.demo10.Outer;public class Application { public static void main(String[] args) { //类型直接的转换:基本类型转换 父 子 //高 低 Person s1=new Student(); //student这个对象转换成Student类型,我们就可以使用Student类型的方法 Student student= (Student)s1;//高转低强制转换 //子类转换成父类可能会丢失一些方法 Student s2=new Student(); s2.go(); Person person=student; //内部类主函数 //new Outer outer=new Outer(); //通过这个外部类来实例化内部类 Outer.Inter inter=outer.new Inter(); inter.in(); inter.getID(); }}/*1、父类引用指向子类对象2、把子类转换成父类,向上转型3、把父类转换成子类,向下转型,需强制转换4、方便方法的调用,减少重复的代码 */
Original: https://www.cnblogs.com/tomn/p/16260407.html
Author: 1号小白学编程
Title: Day15
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/569358/
转载文章受原作者版权保护。转载请注明原作者出处!