精通Java学习之路(二)

本文章的图片由于是天香园1.0的但是过期了图片就查看不了,就当我自己的一个纪念了吧~

抽象类与接口—

->抽象类的抽象概念:父类知道子类一定要干嘛,但是每个子类完成的都不一样,子类以后也只会用重写的功能,那么父类的该功能就可以定义为抽象方法,子类重写调用子类自己

->父类中的所有抽象方法在子类中必须被全部重写,或者把这个子类也写成抽象类。
抽象类存在的意义就是当母猪生孩子,就是拿来被继承的

->接口interface,是更加彻底的抽象,用于规范思想,子类必须实现接口的全部抽象方法

->实现接口的类称为实现类
接口中所有的抽象方法也是全部要重写

->接口也可以继承接口
接口中没有构造器,不能创建对象

类有5大成分:成员变量,方法,构造器,代码块,内部类
静态代码块优先会与类执行一次,可用于初始化操作,实例代码块用于执行实例对象,可用于初始化实例资源。

final-

**
**final(最终):修饰类,表示该类不能被继承了,实际开发中没怎么用
final修饰方法,该方法不能被重写
final修饰变量,变量有且只能赋值一次
final静态变量也可以用 静态代码块赋值:

img

单例设计模式:一个类永远只存在一个对象,就像虚拟机,任务管理器,有些只能开一个窗口的游戏。
饿汉单例设计模式:通过类获取单例对象的时候,对象就已经提前做好了

xml文件

xml(可扩展标记语言)文件用于数据交换,数据传输;配置文件;数据存储;
xml文件元素: 声明(抬头):
元素(标签)(一个XML文件只能有一个根标签,就是最大的那个),属性,注释,实体字符,CDATA字符数据区,处理指令。元素(标签)(一个XML文件只能有一个根标签,就是最大的那个),属性(id=?,desc=?),注释(),实体字符(转义字符),CDATA字符数据区,处理指令(就是css)。

xml中的转义字符:
<为<>为> “为"’为'&为&

html是用来显示数据的;xml是用来描述数据、存放数据的,xml不是HTML的替代品,xml和html是两种不同用途的语言。 XML 不是要替换 HTML;实际上XML 可以视作对 HTML 的补充。XML 和HTML 的目标不同HTML 的设计目标是显示数据并集中于数据外观,而XML的设计目标是描述数据并集中于数据的内容,XML是一种跨平台的,与软、硬件无关的,处理与传输信息的工具。

这边建议直接上代码,里面有注释好了解看些,复制到自己的IDE去看吧

抽象类学习代码:

1
2
3
4
5
6
public class chouxiang {static abstract class Animal{public abstract void run();//抽象方法public abstract void eat();}//父类定义为抽象的static abstract class Dog extends Animal{@Overridepublic void run(){System.*out*.println("狗跑步");}}static class Cat extends Animal{@Override//必须重写抽象类的全部方法,不然这个类也要被写成抽象类public void run(){System.*out*.println("猫跑步");}@Overridepublic void eat(){System.*out*.println("猫吃饭");}}public static void main(String[] args) {Cat cat =new Cat();cat.eat();cat.run();//抽象类不能创建对象,但是一定有构造器*/**
反证法证明:如果能创建:Animal an =new Animal();
an.run();这时这个方法就跑不了,因为没有定义
或者直接说:抽象类本来就是抽象,抽象就不能具体化;
\*/
*//抽象类优点可以得到拥有抽象方法的能力}}

接口学习代码:

接口类:

1
2
3
public interface jiekou {public abstract void run();//标灰是因为接口中的抽象方法默认就是public abstract,所以可以省略不写前面的void eat();public static final String *name* = "sb";//常量,运行过程中不许更改//接口中常量可以省去public static finalclass cl1{public void hit(){System.*out*.println("父类打");}}interface inter{default void hit(){System.*out*.println("接口打");}}class cl2 extends cl1 implements inter{//继承在前接口在后,继承为亲爹,接口为干爹public static void main(String[] args) {cl2 cc =new cl2();cc.hit();//运行出来是父类的方法}
}
}

实现类:

1
2
3
4
5
interface jiekou2{void go();}interface jiekou3 extends jiekou4,jiekou5{
//接口继承接口,目的也是省空间
void set();}interface jiekou4{void get();}interface jiekou5{void abab();}public class shixianlei implements jiekou,jiekou2,jiekou3{private String name;private int age;public shixianlei(String name,int age){this.name=name;this.age=age;}@Overridepublic void run() {System.*out*.println(name+"跑");}
@Override
public void eat() {}@Overridepublic void go() {}@Overridepublic void set() {}@Overridepublic void get() {}@Overridepublic void abab() {}}

xml学习的代码:

何平安19boyselect *from student where id < 123 && age > 18

代码块学习时候的代码:

1
2
3
public class daimakuai {private final String name;static {System.*out*.println("静态代码块,先执行一次");}{System.*out*.println("实例代码块执行一次");name="何平安";}
public static void main(String[] args) {System.*out*.println("主方法执行一次");daimakuai d1=new daimakuai();//执行实例代码块System.*out*.println(d1.name);*buy*(12);}final double r=3.14;public static final double *s*;static {*s*=123;}//静态代码块赋值//r=23;//final变量被第二次赋值,报错public static void buy(final double w){//w=15;}
}