当前位置: 首页 > news >正文

外国做挂的网站是多少钱东莞网站建设总结

外国做挂的网站是多少钱,东莞网站建设总结,网页网站的区别,网站建设 的公司🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:【Java】内容概括 【前言】 在Java面向对象编程中,抽象类和接口是两个非常重要的概念,它们为代…

在这里插入图片描述

🎁个人主页:User_芊芊君子
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:【Java】内容概括

在这里插入图片描述
在这里插入图片描述

【前言】

在Java面向对象编程中,抽象类接口是两个非常重要的概念,它们为代码的抽象化、模块化和可扩展性提供了强大的支持。无论是开发大型企业级应用,还是小型程序,掌握抽象类和接口的使用都至关重要。本文将通过详细的理论讲解、丰富的代码示例、直观的图片以及对比表格,帮助你深入理解Java抽象类和接口的本质与应用。

文章目录:

  • 一、抽象类
    • 1.什么是抽象类
    • 2.抽象类语法
    • 3.抽象类特征
      • 3.1 抽象类不能实例化对象
      • 3.2 抽象方法不能是private的
      • 3.3 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
      • 3.4 抽象类必须被继承,并且继承后子类要重写父类的抽象方法,除非子类也是抽象类,用abstract修饰
      • 3.5 抽象类中不⼀定包含抽象⽅法,但是有抽象⽅法的类⼀定是抽象类
      • 3.6 抽象类中可以有构造⽅法,供⼦类创建对象时,初始化⽗类的成员变量
    • 4.抽象类的作用
  • 二、接口
    • 1.什么是接口?
    • 2.语法规则
    • 3.接口的使用
    • 4.接口特性
      • 4.1 接口是一种引用类型,但是不能直接new接口的对象
      • 4.2 接口中的方法会被默认为public abstract,其他修饰符会报错
      • 4.3 接口中的方法不能在接口中实现,只能通过接口的类来实现
      • 4.4 重写接口方法时,不能使用默认的访问权限
      • 4.5 接口中可以有变量,但他会被默认为public static final 变量
      • 4.6 接口中不能有静态代码块和构造方法
    • 5.实现多个接口
    • 6.接口间的继承
    • 7.接口使用实例
    • 8.Clonable接口和深拷贝
      • 8.1 Clonable接口
      • 8.2 浅拷贝
      • 8.3 深拷贝
    • 9.抽象类和接口的区别

一、抽象类

1.什么是抽象类

在面对对象的概念中,所以对象都是通过类来描述的,但并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类
在这里插入图片描述

Dog类和Cat类都属于Animal类,但Dog()和Cat()方法没有实际的行为,可以将他们设计成抽象方法,包含抽象方法的类就是抽象类

2.抽象类语法

在Java中,被abstract修饰的类称抽象类,抽象类中,被abstract修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。

public abstract class Animal {abstract public void eat();//抽象方法:被abstract修饰,没有方法体public double show(){      //自己增加的方法return show1;}protected double show1;//参数
}

3.抽象类特征

3.1 抽象类不能实例化对象

public abstract class Animal {Animal animal = new Animal();
}

在这里插入图片描述

3.2 抽象方法不能是private的

public abstract class Animal {abstract private void eat();//抽象方法:被abstract修饰,没有方法体
}

在这里插入图片描述

3.3 抽象方法不能被final和static修饰,因为抽象方法要被子类重写

abstract final void eat();
abstract public static void eat();

在这里插入图片描述

3.4 抽象类必须被继承,并且继承后子类要重写父类的抽象方法,除非子类也是抽象类,用abstract修饰

public abstract class Cat extends Animal {@Overridepublic  void eat(){}
}
public abstract class Cat extends Animal {@Overridepublic abstract void eat();}

3.5 抽象类中不⼀定包含抽象⽅法,但是有抽象⽅法的类⼀定是抽象类

3.6 抽象类中可以有构造⽅法,供⼦类创建对象时,初始化⽗类的成员变量

4.抽象类的作用

抽象类本身不能被实例化,只能创建子类,并且重写抽象方法,这就起到检验的作用

二、接口

1.什么是接口?

字面意思:我们生活中的水龙头,插座,充电线都是有接口的,才能插上。接口就是公共的行为规范标准,在实现时,只要符合规范标准,就能通用

2.语法规则

接口的定义和类基本相同,将class换成interface关键字

public interface IShape {public static final int SIZE = 100;//接口变量默认public static finalpublic abstract void test();//接口方法默认public abstract
}

【注意】

  • 接口命名一般以大写字母I开头;
  • 接口不能被实例化;

3.接口的使用

类与接口之间是implements的关系

public class 类名 implenments 接口名{
//...
}

这里建立一个IUSB接口和Mouse类

public interface IUSB {void openDevice();void closeDevice();
}
public class Mouse implements IUSB{@Overridepublic void openDevice() {System.out.println("打开鼠标");}@Overridepublic void closeDevice() {System.out.println("关闭鼠标");}
}

4.接口特性

4.1 接口是一种引用类型,但是不能直接new接口的对象

public class TestUSB {public static void main(String[] args) {USB usb = new USB();}
}

在这里插入图片描述

4.2 接口中的方法会被默认为public abstract,其他修饰符会报错

public interface USB {private void openDevice();//private使用错误void closeDevice();
}

在这里插入图片描述

4.3 接口中的方法不能在接口中实现,只能通过接口的类来实现

public interface USB {//void openDevice();void closeDevice(){System.out.println("关闭USB设备");}
}

在这里插入图片描述

4.4 重写接口方法时,不能使用默认的访问权限

public class Mouse implements USB{@Overridepublic void openDevice() {System.out.println("打开鼠标");}
}

在这里插入图片描述

4.5 接口中可以有变量,但他会被默认为public static final 变量

public interface USB {int susu = 250;//默认被final public static修饰void openDevice();void closeDevice();
}

4.6 接口中不能有静态代码块和构造方法

public interface USB {public USB(){}{}int susu = 250;//默认被final public static修饰void openDevice();void closeDevice();
}

在这里插入图片描述

5.实现多个接口

一个类可以实现多个接口,这就是继承所做不到的

  • 这里创建一个Dog类,可以让他实现多个接口,如IRunning,ISwimming,IFlying。每个接口的抽象方法都有重写,否则必须设置为抽象类
  • AIT + InS快捷键重写
public class Dog extends Animal implements IRunning,ISwimming{@Overridepublic void run() {}@Overridepublic void swim() {}
}

狗:既能跑,又能游;

【注意】

有了接口之后,我们就不用注意具体类型,只需要关注这个类是否具备某种类型

6.接口间的继承

在Java中,类和类之间是单继承的,但一个类可以实现多个接口,接口与接口之间可以多继承

这段代码就继承了两个接口:游和跑

public class Dog extends Animal implements ISwimming,IRunning{@Overridepublic void run() {}@Overridepublic void swim() {}
}

7.接口使用实例

对象之间大小比较:

public class Student {public String name;public int score;public Student (String name,int score){this.name=name;this.score=score;}@Overridepublic String toString() {return super.toString();}
}
public class Test {public static void main(String[] args) {Student s1 = new Student("小华",20);Student s2 = new Student("小张",10);System.out.println(s1>s2);}
}

在这里插入图片描述

这样进行比较会报错,因为没有指定根据分数还是什么来比较,这样不太灵活,我们可以使用接口,如下:

使用Comparable接口

public class Student implements Comparable<Student>{public String name;public int age;public Student (String name,int age){this.name=name;this.age=age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student o) {if(this.age>o.age)return 1;else if(this.age == o.age)return 0;elsereturn -1;}}
public class Test {public static void main(String[] args) {Student s1 = new Student("小华",20);Student s2 = new Student("小张",12);//System.out.println(s1>s2);if(s1.compareTo(s2)>0){System.out.println("s1>s2");}}
}

在这里插入图片描述
使用Comparator接口

import java.util.Comparator;public class AgeComparator implements Comparator<Student> {@Overridepublic int compare(Student o1, Student o2) {return o1.age-o2.age;}
}
public class Test {public static void main(String[] args) {Student s1 = new Student("小华",20);Student s2 = new Student("小张",12);AgeComparator ageComparator=new AgeComparator();int ret = ageComparator.compare(s1,s2);if(ret>0){System.out.println("s1>s2");}

在这里插入图片描述

如果是根据名字来比较的,就要看对应字母的大小

8.Clonable接口和深拷贝

8.1 Clonable接口

Java 中内置了⼀些很有⽤的接⼝,Clonable就是其中之⼀.
Object 类中存在⼀个clone⽅法,调⽤这个⽅法可以创建⼀个对象的"拷⻉".但是要想合法调⽤clone
⽅法,必须要先实现Clonable接⼝,否则就会抛出CloneNotSupportedException异常.

public class Person implements Cloneable{public String name;public int age;public Person (String name,int age){this.name=name;this.age=age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
public class Test1 {public static void main(String[] args) throws CloneNotSupportedException{Person person1 = new Person("小华子",20);Person person2 = (Person) person1.clone();//强制类型转换System.out.println(person2);}
}

在这里插入图片描述
受查异常/编译时异常
在这里插入图片描述
解决方法:
在这里插入图片描述

8.2 浅拷贝

class Money implements Cloneable{public double money = 9.9;
 @Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();
lic class Test1 {public static void main(String[] args) throws CloneNotSupportedException{Person person1 = new Person("小华子",20);Person person2 = (Person) person1.clone();System.out.println(person1.m.money);System.out.println(person2.m.money);System.out.println("==============");person2.m.money = 19.9;System.out.println(person1.m.money);System.out.println(person2.m.money);}

在这里插入图片描述

在这里插入图片描述

通过clone,我们只是拷⻉了Person对象。但是Person对象中的Money对象,并没有拷⻉。通过person2这个引⽤修改了m的值后,person1这个引⽤访问m的时候,值也发⽣了改变。这⾥就是发⽣了浅拷⻉。

8.3 深拷贝

class Money implements Cloneable{public double money = 9.9;@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
public class Person implements Cloneable{public String name;public int age;public Money m = new Money();public Person (String name,int age){this.name=name;this.age=age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overrideprotected Object clone() throws CloneNotSupportedException {//return super.clone();Person tmp = (Person) super.clone();tmp.m = (Money) this.m.clone();return tmp;}
}
public class Test1 {public static void main(String[] args) throws CloneNotSupportedException{Person person1 = new Person("小华子",20);Person person2 = (Person) person1.clone();System.out.println(person1.m.money);System.out.println(person2.m.money);System.out.println("==============");person2.m.money = 19.9;System.out.println(person1.m.money);System.out.println(person2.m.money);}

核心代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.抽象类和接口的区别

抽象类中可以包含普通⽅法和普通字段,这样的普通⽅法和字段可以被⼦类直接使⽤(不必重写),
⽽接⼝中不能包含普通⽅法,⼦类必须重写所有的抽象⽅法.

No区别抽象类(abstract)接口(interface)
1结构组成普通类+抽象方法抽象方法+全局常量
2权限各种权限public
3子类使用使用extends关键字继承抽象类使用implements关键字实现接口
4关系一个抽象类可以实现若干接口接口不能继承抽象类,可extends继承多个父接口
5子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口

【总结】

在 Java 里,抽象类与接口是实现抽象编程的关键工具。抽象类融合普通类与抽象方法,可定义部分实现逻辑,权限灵活;接口由抽象方法和全局常量构成,成员权限默认 public 。子类继承抽象类用 extends ,实现接口用 implements 。关系上,抽象类能实现多个接口,接口可多继承。继承限制方面,子类单继承抽象类,却可多实现接口 。二者各有适用场景,抽象类适合提炼共性、留存部分实现;接口利于规范行为、实现多态解耦。合理运用它们,能让代码架构更清晰、可扩展与可维护,助力构建灵活且健壮的 Java 程序 。

在这里插入图片描述

http://www.dtcms.com/a/572469.html

相关文章:

  • 传奇服务器如何做网站儿童故事网站建设
  • 我想做服装网站怎么做怎么看网站有没有备案
  • 阿里云网站备案创建站点如何做网站
  • 21天网站建设实录pdf商务网页设计与制作软件
  • 贵阳市做网站的公司绛县做网站
  • 千博网站建设中山建设网站官网
  • 做微信公众号的网站有哪些软件技术一个月工资多少
  • vs做网站时怎么弹出窗口徐东做网站
  • 专业格泰建站个人网站可以做淘宝推广
  • 广州市白云区建设局 网站构建自己网站
  • 搞笑图片网站源码做商城网站需要多大的服务器
  • 邵阳市建设网站网站做境外第三方支付
  • 石家庄建站培训大连网建科技
  • 广州市网站建设公司在哪里网站模版制作
  • 网页的网站建设初学者的网站建设
  • 微信微网站模板下载wordpress多个page
  • 做网站甲方乙方公司的区别wordpress 点击文章图片路径
  • 拱墅网站建设制作公众号编辑 wordpress
  • 青岛开发区建设局网站最简单的做网站
  • 做网站需要合同吗公众号推广文案范文
  • an网站建设建筑公司网址大全
  • 贵阳商城网站建设全球最好的域名注册公司
  • 网站开发原型法许昌企业网站去哪开发
  • 厦门网站建设公司排名wordpress 知更鸟 网格
  • cad外包网站seo的基本步骤包括哪些
  • 北京最大的网站开发公司网站建设的目的及定位功能
  • 南通市城乡和住房建设局网站wordpress不能访问首页
  • 北京手机网站搭建多少钱安徽省建设工程管理平台
  • 分类信息网站建设专职国内做文玩的网站
  • 精品网站建设费用 磐石网络阿里绿网网站违规