学习一时爽,一直学习一直爽
Hello,大家好,我是 もうり,一个从无到有的技术小白。
Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。
面向对象
万物皆是对象
面向对象有以下特点:
面向对象是一种常见的思想,比较符合人们的思考习惯;
面向对象可以将复杂的业务逻辑简单化,增强代码复用性;
面向对象具有抽象、封装、继承、多态等特性。
面向对象的编程语言主要有:C++、Java、C#等。
封装
封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
比如下面定义了Person的对象
public class Person { // 私有变量 private String name; private String idNum; private int age; // 公共方法 public int getAge(){ return age; } public String getName(){ return name; } public String getIdNum(){ return idNum; } public void setAge( int newAge){ age = newAge; } public void setName(String newName){ name = newName; } public void setIdNum( String newId){ idNum = newId; } }
new一个maoli对象
public class Maoli { public static void main(String args[]){ Person maoli = new Person(); maoli.setName("maoli"); maoli.setAge(20); maoli.setIdNum("12345"); System.out.print("Name : " + maoli.getName()+ " Age : "+ maoli.getAge()); } } OUT: Name : maoli Age : 20
继承
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承可以通过extends和implements两个关键字实现继承
在Person对象中添加公开方法
public class Person { // 私有变量 private String name; private String idNum; private int age; // 公开方法 public Person(String myName, String myid,int myage) { name = myName; idNum = myid; age = myage; } public int getAge(){ return age; } public String getName(){ return name; } public String getIdNum(){ return idNum; } public void setAge( int newAge){ age = newAge; } public void setName(String newName){ name = newName; } public void setIdNum( String newId){ idNum = newId; } }
Maoli.java
public class Maoli extends Person { public Maoli(String myName, String myid,int myage) { super(myName,myid,myage); } public static void main(String args[]){ Person maoli = new Person("maoli","12345",20); System.out.print("Name : " + maoli.getName()+ " Age : "+ maoli.getAge()+"\n"); System.out.println(maoli instanceof Person); } } Name : maoli Age : 20 true
关于继承如下 3 点请记住:
子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问, 只是拥有 。
子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,那你到底要小猫还是小狗?
我们就说"宠物"这个对象就具备多态性。
// 抽象类 abstract class Animal { abstract void eat(); } public class Test { public static void main(String[] args) { System.out.println("调用 show 方法"); show(new Cat()); // 以 Cat 对象调用 show 方法 show(new Dog()); // 以 Dog 对象调用 show 方法 System.out.println("----------------------"); Animal a = new Cat(); // 创建一个a猫 a.eat(); // 调用的是 a猫的 eat Cat c = (Cat)a; // c猫和a猫是同一种猫 c.work(); // c猫去工作 Animal b = new Dog(); b.eat(); Dog d = (Dog)b; d.work(); } public static void show(Animal a) { a.eat(); // 类型判断 if (a instanceof Cat) { // 猫做的事情 Cat c = (Cat)a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog)a; c.work(); } } } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void work() { System.out.println("看家"); } }
OUT
调用 show 方法 吃鱼 抓老鼠 吃骨头 看家 ---------------------- 吃鱼 抓老鼠 吃骨头 看家
好了,这就是今天的内容了,今天最后我有一句话要说:
早く行ってほめてください