方法的三大特性
Java的三大特性是Java中最基础也是最重要的概念
分别是:
- 封装
封装是将数据和方法隐藏在类的内部,只对外提供公共的访问方式。这有助于保护数据的完整性和安全性,同时简化了编程,使得代码更加模块化。 - 继承
继承允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于实现代码的重用和扩展,提高软件开发的效率。 - 多态
多态是指不同的对象对同一消息做出不同的响应。它允许我们使用父类类型的引用指向子类对象,并根据实际对象类型调用相应的方法。多态性增强了代码的灵活性和可扩展性。
封装
实现方式:
-
私有成员变量:将类的成员变量设置为私有(使用private关键字),确保这些变量只能在类的内部被访问和修改。外部代码无法直接访问或修改这些私有变量,从而保证了数据的安全性和完整性。
-
公共方法:私有成员变量不能被外部直接访问,但可以通过在类中定义公共方法(使用public关键字)来提供对这些私有变量的访问和修改。这些公共方法通常包括“getter”方法(用于获取私有变量的值)和“setter”方法(用于设置私有变量的值)。通过这种方式,外部代码可以通过调用这些公共方法来间接地访问和修改私有变量的值,而无需知道其内部实现细节。
代码实例:(User举例)
public class User{
private String name;
private int age;
private String sex;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
继承
继承是面向对象编程(OOP)的四大基本特性之一,它允许我们根据已有的类来创建新类。这种机制有助于实现代码的重用,提高了软件开发的效率。在Java中,继承是通过使用关键字extends来实现的。
1. 继承的基本概念
- 父类与子类:被继承的类称为父类(或基类、超类),而继承的类则称为子类(或派生类)。子类可以从父类中继承属性和方法。
- 代码重用:通过继承,子类可以重用父类的代码,从而避免了重复编写相同的代码。这有助于减少代码的冗余,提高代码的可维护性。
- 扩展功能:子类可以在继承父类的基础上,添加新的属性和方法,从而扩展父类的功能。这使得子类能够更具体地满足特定的需求。
2. Java中的继承实现
需要在子类的定义中使用extends关键字,并指定要继承的父类。
例如:
public class Animal {
private String name;
//构造方法
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name); // 调用父类的构造方法
}
public void bark() {
System.out.println(name + " is barking.");
}
}
在这个例子中,Dog类继承了Animal类。通过继承,Dog类获得了Animal类的name属性和eat方法。
同时,Dog类还添加了一个新的bark方法。
3. 访问父类的成员
继承的成员:子类可以访问父类的非私有成员。
使用super关键字:子类可以使用super关键字来引用父类的成员。
4. 方法重写(Overriding)
概念:子类可以提供一个与父类相同方法名、参数列表和返回类型的方法,从而覆盖父类中的方法实现。这被称为方法重写。
可以使用@Override注解来明确指示一个方法是重写了父类中的方法。
5. 继承的层次结构
多层继承:一个类可以继承自另一个已经继承了其他类的类,形成多层继承的层次结构。
接口与继承:除了类与类之间的继承,Java还支持接口与类之间的继承关系,这进一步丰富了面向对象编程的灵活性。
6. 继承的优缺点
优点:代码重用、扩展性好、易于维护。
缺点:可能导致类与类之间的耦合度过高,增加系统的复杂性;过多的继承层次可能导致性能下降。
多态
我们来看一个不使用多态的例子
class Master {
public void feed(Dog d){
d.eat();
}
}
class Dog {
public void eat(){
System.out.println("小黑在啃骨头");
}
}
public class Test {
public static void main(String[]args){
Master wu = new Master();
Dog xiaohei = new Dog();
wu.feed(xiaohei);
}
}
在上述例子中我们要增加一个宠物的话,不仅需要新增一个类,还需要修改Master中的代码
所以我们可以说Master类的拓展力很弱
使用多态机制,我们创建一个名为pet的宠物类,使所有的宠物都继承这个类
然后让主人类去喂宠物类
class Master {
public void feed(Pet p){
p.eat();
}
}
class Pet {
public void eat(){
System.out.println("请重写此方法");
}
}
class Dog extends Pet{
public void eat(){
System.out.println("小黑在啃骨头");
}
}
public class Test {
public static void main(String[]args){
Master wu = new Master();
Dog xiaohei = new Dog();
wu.feed(xiaohei);
}
}
这样我们再添加新的宠物时只需要让新的宠物继承宠物类即可,不需要再修改Master类了
这样也就提高了Master类的拓展力
补充
向上转型(upcasting)
子类转化父类型 称为: 自动类型转换
向下转型(downcastinig)
父类转化为子类型(需要加强制转化转换符)称为: 强制类型转换
instanceof
如何使用
格式:引用 instanceof 数据类型名例: a instanceof Animal
运算结果数据类型是布尔类型
true 表示 a 指向的对象是一个Animal类型
false 表示 a 指向的对象不是Animal类型
Java规范要求 强制类型转换前 使用instanceof运算符进项判断
避免出现以上异常
本文详细阐述了Java编程中的三大特性:封装通过私有变量和公共方法保护数据安全;继承支持代码重用和扩展;多态实现灵活调用。讲解了继承的实现、访问父类成员、方法重写以及多态在编程中的应用和优缺点。

8万+

被折叠的 条评论
为什么被折叠?



