【Java学习笔记之十三】初探Java面向对象的过程及代码实现

理解Java面向对象的重要知识点:

一、 类,对象

    类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的、红色的、白色的... 这里,汽车设计图就是我们说的类(class),生产车间就是new构造器(大部分对象都是new出来的),生产出来的汽车就是我们要说的对象。可以说java编程实质就是构建类的过程。

    对象?万物皆对象,宇宙中,如植物,动物,人类,每个个体都是各司其职、各尽所能的。这就要求对象高内聚、低耦合(简单理解就是人的大脑,它负责思考,想象,记忆,而不能呼吸,排毒,消化食物,从而保证它独立和高效)。对象具有两种东西状态(属性)和行为(方法),请看下面代码:

Student.java

 1 public class Student {
 2     String name;      //姓名
 3     int age;           //年龄
 4     String classNo;    //班级
 5     String hobby;     //爱好
 6     //输出信息方法
 7     public void show(){
 8         System.out.println(name + "\n年龄:" + age + "\n就读于:" +
 9             classNo + "\n爱好:" + hobby);
10     }
11 }

InitialStudent.java

1 public class InitialStudent {
2     public static void main(String args[]){
3         Student student = new Student();    //建立对象
4         student.name = "张浩";            //给对象赋值
5         student.age = 10;
6         student.classNo = "S1班";      
7         student.hobby = "篮球";
8         student.show();            //调用方法
9 } }

二、封装,继承,多态

    封装?举个粗俗的比喻,我的移动硬盘存了很多各式各类的资料,但是舍友常常借用,时不时拿我的用(格式化?装系统?存电影?),这就给我这个拥有者非常大的不便,我就跟他声明,这个硬盘是我私有的,不能你得按照我允许的方式使用!对象也是这样,不能随意的存取内部数据,否则会造成“交叉感染”。所以我们需要封装:将属性私有化,提供公有的方法访问私有属性。

Adult.java

 1 public class Adult {
 2     private int age;
 3     public int getAge() {
 4         return age;
 5     }
 6     public void setAge(int age) {
 7         if (age < 18) {
 8             System.out.println("错误!最小年龄应为18岁!");
 9             this.age = 18; // 如果不符合年龄要求,则赋予默认值
10         }
11         else{
12         this.age = age;
13         }
14     }
15
16     public String toString() {
17         return " [age=" + age + "]";
18     }
19 }

TestAdult.java

1 public class TestAdult {
2     public static void main(String[] args) {
3         Adult p1 = new Adult();      
4         p1.setAge(20);              //通过seter、geter、toString来对Adult类的私有属性访问
5         System.out.println(p1.toString());  //增加了数据访问限制,保证可维护性
6     }
7 }

继承?经理觉得小李设计的汽车设计图非常棒,但是现在推崇新能源,于是需要将引擎改成电能发动机。于是小陈轻而易举的将图纸中汽油发动机部分改成引擎发动机,再重制一下关系就完成了新图纸!这就是继承的作用:是使用已存在的类的定义作为基础建立新类,新的类可以拥有父类的特点,也可以衍生出更多的特点。这使得复用以前的代码非常容易,能够大大缩短开发时间。

Person.java

 1 class Person {                    // 定义人类
 2     public String mName;         // 姓名
 3     public int mAge;             // 年龄
 4
 5     public void dining() {
 6         System.out.println("吃饱了...");
 7     }                            // 吃饭的方法
 8 }
 9
10 class Student extends Person {   // 学生类继承于人类
11     public float mGrade;         // 成绩
12
13     public void examination() {
14         System.out.println("考试及格了...");
15     }                            // 考试的方法
16 }
17
18 class Teacher extends Person {  // 教师类继承于人类
19     public float mSalary;       // 薪水
20
21     public void prelection() {
22         System.out.println("上课很累...");
23     }                           // 上课的方法
24 }

TestPerson.java 

 1 public class TestPerson {
 2     public static void main(String[] args) {
 3         Student std = new Student(); // 实例化学生对象
 4         std.mName = "李东";
 5         std.mAge = 18; // 为姓名和年龄赋值,访问的是父类中的成员
 6         std.dining(); // 调用吃饭的方法,访问的是父类中的成员
 7         std.examination(); // 调用考试方法,访问的是子类中的成员
 8
 9         Teacher teacher = new Teacher(); // 实例化教师对象
10         teacher.mName = "赵忠祥";
11         teacher.mAge = 72;// 为姓名和年龄赋值,访问的是父类中的成员
12         teacher.dining();// 调用吃饭的方法,访问的是父类中的成员
13         teacher.prelection();// 调用考试方法,访问的是子类中的成员
14     }
15 }

多态?程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。小李喜欢听小鸟唱歌{麻雀,杜鹃,鹦鹉}

    小李:窗外的鸟儿,给我唱首歌。

    1.(鸟 bird = new 麻雀 )?

    2.(鸟 bird = new 杜鹃 )?

    3.(鸟 bird = new 鹦鹉 )?

    鸟儿:bird.sing()~~~~~

    小李:鸟儿唱的不错,你是哪种鸟?

    鸟儿: bird.shape()

    小李:(---如果上面蓝字定义的是3,是鹦鹉)哈哈!原来你是鹦鹉!

    所以,多态的过程实质是一个抽象指令,让一组具有相同行为单具有不同内容的个体协同工作的这样的一个过程。

时间: 2024-11-04 23:17:24

【Java学习笔记之十三】初探Java面向对象的过程及代码实现的相关文章

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处理,即处理异常代码 } 代码区如果有错误,就会返回所写异常的处理. 首先要清楚,如果没有try的话,出现异常会导致程序崩溃.而try则可以保证程序的正常运行下去,比如说: try { int i = 1/0; } catch(Exception e) { ........ } 一个计算的话,如果除数

疯狂Java学习笔记(89)-----------Java习惯用法总结

在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的.在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法.(Joshua Bloch的<Effective Java>对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法.) 我把本文的所有代码都放在公共场所里.你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证. 目录 实现: equals() hashCode() compareTo() clone() 应用: StringBuilde

Java学习笔记(一) java介绍

编程语言分为:编译型语言和解释型语言. 编译型语言需要经过特定编译器通过一次性编译,成为该特定平台硬件可执行的机器码,可脱离开发环境独立运行,运行效率较高,但是无法跨平台移植. 解释型语言需要经过特定解释器逐行解释成特定平台的机器码并立即执行的语言.不能脱离解释器独立运行,运行效率较低,跨平台比较容易,只需提供特定平台的解释器. Java语言既是编译型语言,也是解释型语言.Java程序的执行过程必须经过先编译,后解释两个步骤.Java源程序经过编译生成一种与平台无关的字节码(*.class文件)

Java学习笔记—第十三章 数据库编程入门

第十三章 数据库编程入门 了解JDBC Java中对数据库的访问主要是通过JDBC进行的.JDBC是Java数据库连接技术(Java Database Connectivity)的简称,是用于执行SQL语句的API,可以为多种关系数据库提供统一访问.由一组用Java语言编写的类和接口组成.(SQL是Structure Query Language的缩写,意义为结构化查询语言,是一种标准的关系数据库访问语言.) JDBC的工作机制 使用JDBC完成对数据库的访问主要包括以下五个层次:Java应用程

JAVA学习笔记(三十三)- 字节流转换为字符流

将字节流转换为字符流 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; /* * InputStreamRead

JAVA学习笔记(五十三)- 经典三层架构实例

UserDAO接口 /* * UserDAO接口 */ public interface UserDAO { //插入用户 public void insert(User user); //删除用户 public void delete(int id); //更新用户 public void update(User user); //查询所有用户 public List<User> getAllUsers(); //根据用户名或密码查询用户 public boolean checkUser(U

JAVA学习笔记(四十三)- ThreadLocal

死锁 /* * 死锁:多个线程使用不同的锁,每个线程都需要另一个线程持有的锁 * 出现:同步的嵌套 * */ public class Test01 { public static void main(String[] args) { Tom tom = new Tom(); Alice alice = new Alice(); MyThread mt1 = new MyThread(tom, alice, true); MyThread mt2 = new MyThread(tom, alic

java学习笔记(十三)集合框架、用户界面

集合是一种对象,用于存储.检索.传输数据.由一组类和接口组成. 特点:类型可以不同,长度可变,空间不固定. 对象的存储类型:Set:一般情况下没有顺序,不能重复.List:有序,有重复对象,实现类通常支持null元素.Map:键值对,键.值不能重复,单向一对一关系. ArrayList:以数组方式实现,连续空间,查询效率高.LinkedList:以链表方式实现,增.删.改效率高. 泛型:允许在定义类,接口时指定类型形式参数.保证在集合中的元素类型安全. public class ArrayLis