练竹园何平安

精通Java学习之路(二)

Toretto·2023-08-08 03:57·16 次阅读

精通Java学习之路(二)

抽象类与接口—

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

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

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

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

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


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

final-


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

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

xml文件

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

xml中的转义字符:
<为&lt;>为&gt; “为&quot;’为&apos;&为&amp;

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

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

抽象类学习代码:

public class chouxiang {
static abstract class Animal{
public abstract void run();//抽象方法
public abstract void eat();
}//父类定义为抽象的
static abstract class Dog extends Animal{
@Override
public void run(){
System.out.println("狗跑步");
}
}
static class Cat extends Animal{
@Override//必须重写抽象类的全部方法,不然这个类也要被写成抽象类
public void run(){
System.out.println("猫跑步");
}
@Override
public 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();这时这个方法就跑不了,因为没有定义
或者直接说:抽象类本来就是抽象,抽象就不能具体化;
*/
//抽象类优点可以得到拥有抽象方法的能力
}
}

接口学习代码:

接口类:

public interface jiekou {
public abstract void run();//标灰是因为接口中的抽象方法默认就是public abstract,所以可以省略不写前面的
void eat();
public static final String name = "sb";//常量,运行过程中不许更改
//接口中常量可以省去public static final
class 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();//运行出来是父类的方法
}

}

}

实现类:

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;
}
@Override
public void run() {
System.out.println(name+"跑");
}
//@Override//也可以不写Override,这只是用于检查的
public void eat() {
}
@Override
public void go() {
}
@Override
public void set() {
}
@Override
public void get() {
}
@Override
public void abab() {
}
}

xml学习的代码:

<?xml version="1.0" encoding="UTF-8" ?><!--声明(抬头)-->
<?xml-stylesheet type="text/css" href="./xml.css" ?><!--导入CSS样式-->
<!--元素(标签)-->
<person>
<name>何平安</name>
<age>19</age>
<sex>boy</sex>
<box>
<start></start>
</box>
<Sql>
select *from student where id &lt; 123 &amp;&amp; age &gt; 18
</Sql>
</person>

代码块学习时候的代码:

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;
}

}

posted @   何平安  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
浏览器标题切换end
点击右上角即可分享
微信分享提示