写点什么

今天来聊聊 Java 的基本特性

  • 2024-03-02
    福建
  • 本文字数:3601 字

    阅读完需:约 12 分钟

今天来聊聊Java的基本特性

一、思维导图


Java 特性.xmind


二、知识点及实践 1、Java 基本特性 1.1、封装封装是指隐藏对象的属性和细节,但对外提供公共的访问方式方法


方法重载(方法名称相同,参数项不相同,重载只跟参数有关,与返回类型无关)注意:


    使用重载方法时,记住这两条重要的规则:    不能仅通过更改一个方法的返回类型来重载该方法。    不能有两个名称和参数列表都相同的方法
复制代码


构造方法重载 this 关键字(代表对象,this 就是所在函数的所属对象的引用)


当成员变量和局部变量重名,可以用关键字 this 来区分 this 也可以用于在构造函数中调用其它构造函数。(this 只能定义在构造函数的第一行,因为初始化动作必须要先执行)封装优势


良好的封装能够减少耦合类内部的结构可以自由修改可以对成员变量进行更精确的控制隐藏信息,实现细节代码 public class Person {private String name;private int age;


public Person(String name, int age) {    this.name = name;    this.age = age;}
// 构造函数、getter和setter方法public String getName() { return name;}
public void setName(String name) { this.name = name;}
public int getAge() { return age;}
public void setAge(int age) { this.age = age;}
// 其他方法,比如一个简单的打招呼方法public void sayHello() { System.out.println("你好,我是" + name + ",今年" + age + "岁。");}
复制代码


}1.2、 继承继承可以被定义为一个对象获取另一个对象属性的过程方法(方法覆写)子类的方法的名称、参数签名和返回类型必须与父类的方法的名称、参数签名和返回类型一致子类方法不能缩小父类的访问权限子类方法不能抛出比父类更多的异常方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间父类的静态方法不能被子类覆盖为非静态方法子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法父类的非静态方法不能被子类覆盖为静态方法父类的私有方法不能被子类覆盖父类的抽象方法可以被子类通过两种途径覆盖:一是子类实现父类的抽象方法;二是子类重新声明父类的抽象方法(例如,扩大访问权限)父类的非抽象方法可以被覆盖为抽象方法 super 关键字访问成员变量:super.成员变量访问构造方法:super(……)访问成员方法:super.成员方法()


public class Bicycle {


// the Bicycle class has// three fieldspublic int cadence;public int gear;public int speed;
// the Bicycle class has// one constructorpublic Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed;}
// the Bicycle class has// four methodspublic void setCadence(int newValue) { cadence = newValue;}
public void setGear(int newValue) { gear = newValue;}
public void applyBrake(int decrement) { speed -= decrement;}
public void speedUp(int increment) { speed += increment;}
public void printDescription(){ System.out.println("\nBike is " + "in gear " + this.gear + " with a cadence of " + this.cadence + " and travelling at a speed of " + this.speed + ". ");}
复制代码


}


public class MountainBike extends Bicycle {public MountainBike(int startCadence, int startSpeed, int startGear) {// 调用父类的构造方法 super(startCadence, startSpeed, startGear);// MountainBike 特有的初始化代码 seatHeight = 0;}


private int seatHeight;
public void setSeatHeight(int newSeatHeight) { this.seatHeight = newSeatHeight;}

public int bikeSum(int a, int b) { return a + b;}
复制代码


}继承父类的子类的可以做什么


子类的构造方法与父类的构造方法关系


子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器 class SuperClass {private int n;SuperClass(){System.out.println("SuperClass()");}SuperClass(int n) {System.out.println("SuperClass(int n)");this.n = n;}}// SubClass 类继承 class SubClass extends SuperClass{private int n;


SubClass(){ // 自动调用父类的无参数构造器 System.out.println("SubClass");}


public SubClass(int n){super(300); // 调用父类中带有参数的构造器 System.out.println("SubClass(int n):"+n);this.n = n;}}// SubClass2 类继承 class SubClass2 extends SuperClass{private int n;


SubClass2(){super(300); // 调用父类中带有参数的构造器 System.out.println("SubClass2");}


public SubClass2(int n){ // 自动调用父类的无参数构造器 System.out.println("SubClass2(int n):"+n);this.n = n;}}public class TestSuperSub{public static void main (String args[]){System.out.println("------SubClass 类继承------");SubClass sc1 = new SubClass();SubClass sc2 = new SubClass(100);System.out.println("------SubClass2 类继承------");SubClass2 sc3 = new SubClass2();SubClass2 sc4 = new SubClass2(200);}}子类方法与父类方法关系


实例方法静态方法 1.3、 多态多态性是指对象能够有多种形态。多态就是同一个接口,使用不同的实例而执行不同操作必要三个条件:继承、重写、父类引用指向子类对象:Parent p = new Child()转型向上类型转换(upcast):比如说将 Cat 类型转换为 Animal 类型,即将子类型转换为父类型向下类型转换(downcast):比如将 Animal 类型转换为 Cat 类型


优点:


消除类型之间的耦合关系可替换性可扩充性接口性灵活性代码 public class MountainBike extends Bicycle {private String suspension;


public MountainBike(int startCadence, int startSpeed, int startGear, String suspension) {    super(startCadence, startSpeed, startGear);    this.suspension = suspension;}
public String getSuspension() { return this.suspension;}
public void setSuspension(String suspensionType) { this.suspension = suspensionType;}
public void printDescription() { super.printDescription(); System.out.println("The " + "MountainBike has a" + getSuspension() + " suspension.");}
复制代码


}


public class RoadBike extends Bicycle {// In millimeters (mm// )// This is a property specific to a RoadBike.private int tireWidth;


public RoadBike(int startCadence,                int startSpeed,                int startGear,                int newTireWidth){    super(startCadence,            startSpeed,            startGear);    this.setTireWidth(newTireWidth);}
public int getTireWidth(){ return this.tireWidth;}
public void setTireWidth(int newTireWidth){ this.tireWidth = newTireWidth;}
public void printDescription(){ super.printDescription(); System.out.println("The RoadBike" + " has " + getTireWidth() + " MM tires.");}
复制代码


}


public class TestBikes {public static void main(String[] args) {Bicycle bicycle1 , bicycle2, bicycle3;


    bicycle1 = new Bicycle(20,10,1);    bicycle2 = new MountainBike(20,10,1,"moutain");    bicycle3 = new RoadBike(20,10,1,11);    bicycle1.printDescription();    bicycle2.printDescription();    bicycle3.printDescription();}
复制代码


}1.4、 抽象抽象类,有抽象方法的类就叫抽象类抽象方法:在类中没有方法体的方法,就是抽象方法接口与抽象类之间不同及如何选择

技术前沿拓展

前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。

看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
今天来聊聊Java的基本特性_伤感汤姆布利柏_InfoQ写作社区