Java 学习 day08

01-面向对象(多态-概念)

 1 package myFirstCode;
 2
 3 /*
 4 多态:可以理解为事务存在的多种体现形态。
 5
 6 人:男人,女人
 7
 8 动物:猫,狗
 9
10
11 猫 x = new 猫();
12
13 动物 x = new 猫();
14
15 1. 多态的体现
16 2. 多态的前提
17 3. 多态的好处
18 4. 多态的应用
19
20  */
21
22
23
24 public class DuoTailDemo {
25
26     public static void main(String[] args) {
27         // TODO Auto-generated method stub
28
29     }
30
31 }

02-面向对象(多态-扩展性)

  1 package myFirstCode;
  2
  3 /*
  4 多态:可以理解为事务存在的多种体现形态。
  5
  6 人:男人,女人
  7
  8 动物:猫,狗
  9
 10
 11 猫 x = new 猫();
 12
 13 动物 x = new 猫();
 14
 15 1. 多态的体现
 16     父类的引用指向了自己的子类对象。
 17     父类的引用也可以接收自己的子类对象。
 18
 19 2. 多态的前提
 20     必须是类与类之间有关系。要么继承,要么实现。
 21     通常还有一个前提:存在覆盖。
 22
 23 3. 多态的好处
 24     多态的出现大大的提高了程序的扩展性。
 25
 26 4. 多态的弊端
 27     提高了扩展性,但是只能使用父类的引用访问父类中的成员。
 28
 29 5. 多态的应用
 30
 31  */
 32
 33 abstract class Animal
 34 {
 35     abstract void eat();
 36 }
 37
 38 class Cat extends Animal
 39 {
 40     public void eat()
 41     {
 42         System.out.println("吃鱼");
 43     }
 44
 45     public void catchMouse()
 46     {
 47         System.out.println("抓老鼠");
 48     }
 49
 50 }
 51
 52 class Dog extends Animal
 53 {
 54     public void eat()
 55     {
 56         System.out.println("吃骨头");
 57     }
 58     public void kanjia()
 59     {
 60         System.out.println("看家");
 61     }
 62 }
 63
 64 class Pig extends Animal
 65 {
 66     public void eat()
 67     {
 68         System.out.println("饲料");
 69     }
 70     public void gongDi()
 71     {
 72         System.out.println("拱地");
 73     }
 74 }
 75
 76
 77 public class DuoTailDemo {
 78
 79     public static void main(String[] args) {
 80         // TODO Auto-generated method stub
 81         /*
 82         Cat c = new Cat();
 83         c.eat();
 84         Dog d = new Dog();
 85         d.eat();
 86         Cat c = new Cat();
 87         function(c);
 88         Dog d = new Dog();
 89         function(d);
 90          */
 91
 92 //        Animal c = new Cat();
 93 //        c.eat();
 94
 95         function(new Cat());
 96         function(new Dog());
 97         function(new Pig());
 98     }
 99     public static void function(Animal a)//Animal a = new Cat();
100     {
101         a.eat();
102     }
103     /*
104     public static void function(Cat c)
105     {
106         c.eat();
107     }
108     public static void function(Dog d)
109     {
110         d.eat();
111     }
112     */
113
114 }

03-面向对象(多态-转型)

  1 package myFirstCode;
  2
  3 /*
  4 多态:可以理解为事务存在的多种体现形态。
  5
  6 人:男人,女人
  7
  8 动物:猫,狗
  9
 10
 11 猫 x = new 猫();
 12
 13 动物 x = new 猫();
 14
 15 1. 多态的体现
 16     父类的引用指向了自己的子类对象。
 17     父类的引用也可以接收自己的子类对象。
 18
 19 2. 多态的前提
 20     必须是类与类之间有关系。要么继承,要么实现。
 21     通常还有一个前提:存在覆盖。
 22
 23 3. 多态的好处
 24     多态的出现大大的提高了程序的扩展性。
 25
 26 4. 多态的弊端
 27     提高了扩展性,但是只能使用父类的引用访问父类中的成员。
 28
 29 5. 多态的应用
 30
 31  */
 32
 33 abstract class Animal
 34 {
 35     abstract void eat();
 36 }
 37
 38 class Cat extends Animal
 39 {
 40     public void eat()
 41     {
 42         System.out.println("吃鱼");
 43     }
 44
 45     public void catchMouse()
 46     {
 47         System.out.println("抓老鼠");
 48     }
 49
 50 }
 51
 52 class Dog extends Animal
 53 {
 54     public void eat()
 55     {
 56         System.out.println("吃骨头");
 57     }
 58     public void kanjia()
 59     {
 60         System.out.println("看家");
 61     }
 62 }
 63
 64 class Pig extends Animal
 65 {
 66     public void eat()
 67     {
 68         System.out.println("饲料");
 69     }
 70     public void gongDi()
 71     {
 72         System.out.println("拱地");
 73     }
 74 }
 75
 76
 77 public class DuoTailDemo2 {
 78
 79     public static void main(String[] args) {
 80 //        Animal a = new Cat();//类型提升。向上转型、向下转型。
 81 //        a.eat();
 82
 83         //如果想要调用猫的特有方法时,如何操作?
 84         //强制将父类的引用。转换成子类类型。向下转型。
 85 //        Cat c = (Cat)a;
 86 //        c.catchMouse();
 87
 88         //千万不要出现这样的操作,就是将父类对象转成子类类型。
 89         //我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。
 90         //多态自始至终都是子类对象在做着变化。
 91 //        Animal a = new Animal();
 92 //        Cat c = (Cat)a;
 93
 94         /*
 95         毕姥爷 x = new 毕老师();
 96
 97         x.讲课();
 98
 99         毕老师 y = (毕老师)x;
100         y.看电影();
101         //x.看电影(); 没有看电影的方法
102         */
103         function(new Dog());
104         function(new Cat());
105     }
106     public static void function(Animal a)//Animal a = new Cat();
107     {
108         a.eat();
109         /*
110         if(a instanceof Animal)
111         {
112             System.out.println("haha")
113         }
114          */
115         if(a instanceof Cat)
116         {
117             Cat c =  (Cat)a;
118             c.catchMouse();
119         }
120         else if(a instanceof Dog)
121         {
122             Dog c =  (Dog)a;
123             c.kanjia();
124         }
125     }
126
127 }

04-面向对象(多态-示例)

 1 package myFirstCode;
 2
 3 /*
 4 基础班学生:
 5     学习,睡觉。
 6 高级班学生:
 7     学习,睡觉。
 8
 9 可以将这两类事务进行抽取。
10  */
11
12 abstract class Student5
13 {
14     public abstract void study();
15     public void sleep()
16     {
17         System.out.println("躺着睡");
18     }
19 }
20
21 class DoStudent
22 {
23     public void doSome(Student5 stu)
24     {
25         stu.study();
26         stu.sleep();
27     }
28 }
29
30 //-----以上是工具类
31
32
33 class BaseStudent2 extends Student5
34 {
35     public void study()
36     {
37         System.out.println("base study");
38     }
39     public void sleep()
40     {
41         System.out.println("坐着睡");
42     }
43 }
44
45 class AdvStudent2 extends Student5
46 {
47     public void study()
48     {
49         System.out.println("adv study");
50     }
51     public void sleep()
52     {
53         System.out.println("坐着睡");
54     }
55 }
56
57
58
59 public class DuoTailDemo3 {
60
61     public static void main(String[] args)
62     {
63         DoStudent ds = new DoStudent();
64         ds.doSome(new BaseStudent2());
65         ds.doSome(new AdvStudent2());
66
67 //        BaseStudent2 bs = new BaseStudent2();
68 //        bs.sleep();
69 //        bs.study();
70 //        AdvStudent2 as = new AdvStudent2();
71 //        bs.sleep();
72 //        bs.study();
73     }
74 }

05-面向对象(多态中成员的特点)

 1 package myFirstCode;
 2
 3 class Fu3
 4 {
 5     void method1()
 6     {
 7         System.out.println("fu method1");
 8     }
 9     void method2()
10     {
11         System.out.println("fu method2");
12     }
13 }
14 class Zi3 extends Fu3
15 {
16     void method1()
17     {
18         System.out.println("zi method1");
19     }
20     void method3()
21     {
22         System.out.println("zi method3");
23     }
24 }
25
26 public class DuoTaiDemo4 {
27
28     public static void main(String[] args) {
29         // TODO Auto-generated method stub
30
31         Fu3 f = new Zi3();
32         f.method1();
33         f.method2();
34 //        f.method3();
35 /*
36  * 在多态中成员函数的特点:
37  * 在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
38  * 在运行时期:参阅对象所属的类中是否有调用的方法。
39  * 简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
40  *
41  */
42
43
44
45
46 //        Zi3 z = new Zi3();
47 //        z.method1();
48 //        z.method2();
49 //        z.method3();
50
51     }
52
53 }

06-面向对象(多态的主板示例)

 1 package myFirstCode;
 2
 3 import classOne.IfClause;
 4
 5 /*
 6  * 需求:
 7  * 电脑运行实例,
 8  * 电脑运行基于主板。
 9  */
10
11 interface PCI
12 {
13     public void open();
14     public void close();
15 }
16
17 class MainBoard
18 {
19     public void run()
20     {
21         System.out.println("mainboard run");
22     }
23     public void usePCI(PCI p)//PCI p = new NetCard() //接口型引用指向自己的子类对象。
24     {
25         if (p!=null)
26         {
27             p.open();
28             p.close();
29         }
30     }
31 }
32
33 class NetCard implements PCI
34 {
35     public void open()
36     {
37         System.out.println("netcard open");
38     }
39     public void close()
40     {
41         System.out.println("netcard close");
42     }
43 }
44 class SoundCard implements PCI
45 {
46     public void open()
47     {
48         System.out.println("soundcard open");
49     }
50     public void close()
51     {
52         System.out.println("soundcard close");
53     }
54 }
55
56 /*
57 class MainBoard
58 {
59     public void run()
60     {
61         System.out.println("manboard run");
62     }
63     public void useNetCard(NetCard c)
64     {
65         c.open();
66         c.close();
67     }
68 }
69
70 class NetCard
71 {
72     public void open()
73     {
74         System.out.println("netcard open");
75     }
76     public void close()
77     {
78         System.out.println("netcard close");
79     }
80 }
81 */
82
83 public class DuoTaiDemo5 {
84
85     public static void main(String[] args)
86     {
87         // TODO Auto-generated method stub
88         MainBoard mb = new MainBoard();
89         mb.run();
90         mb.usePCI(null);
91         mb.usePCI(new NetCard());
92         mb.usePCI(new SoundCard());
93     }
94
95 }

07-面向对象(多态的扩展示例)

 1 package myFirstCode;
 2  /*
 3   * 需求:数据库的操作。
 4   *
 5   * 数据是:用户信息。
 6   * 1. 连接数据库。JDBC Hibernate
 7   * 2. 操作数据库。
 8   *     C create R read U update D delete
 9   * 3. 关闭数据库连接
10   */
11
12 interface UserInfoDao
13 {
14     public void add(User user);
15     public void delete(User user);
16
17 }
18
19
20
21 class UserInfoByJDBC implements UserInfoDao
22 {
23     public void add(User user)
24     {
25         1. JDBC连接数据库
26         2. 使用sql添加语句添加数据
27         3. 关闭连接
28     }
29     public void delete(User user)
30     {
31         1. JDBC连接数据库
32         2. 使用sql添加语句删除数据
33         3. 关闭连接
34     }
35 }
36
37 class UserInfoByHibernate implements UserInfoDao
38 {
39     public void add(User user)
40     {
41         1. Hibernate连接数据库
42         2. 使用sql添加语句添加数据
43         3. 关闭连接
44     }
45     public void delete(User user)
46     {
47         1. Hibernate连接数据库
48         2. 使用sql添加语句删除数据
49         3. 关闭连接
50     }
51 }
52
53 public class DBOperate {
54     public static void main(String[] args) {
55         // TODO Auto-generated method stub
56 //        UserInfoByJDBC ui = new UserInfoByJDBC();
57 //        UserInfoByHibernate ui = new UserInfoByHibernate();
58
59         UserInfoDao ui= new  UserInfoByJDBC();        //此处是多态
60         ui.add(user);
61         ui.delete(user);
62
63
64     }
65
66 }

08-面向对象(Object类-equals())

 1 package myFirstCode;
 2
 3 /*
 4  * Object:是所有对象的直接或者间接父类,传说中的上帝。
 5  * 该类中定义的肯定是所有对象都具备的功能。
 6  * 任何对象都具备比较相同的功能(地址)
 7  *
 8  *
 9  * Object 类中已经提供了对对象是否相同的比较方法。
10  *
11  * 如果自定义类中也有比较相同的功能,没有必要重新定义。
12  * 只要沿袭父类中的功能,建立自己特有的比较内容即可。这就是覆盖。
13  */
14
15
16 class Demo //extends object
17 {
18     private int num;
19     Demo(int num)
20     {
21         this.num = num;
22     }
23
24     public boolean equals(Object obj)//Object obj = new Demo();
25     {
26         if (obj instanceof Demo)
27             return false;
28         Demo d = (Demo)obj;
29         return this.num == d.num;
30
31     }
32     /*
33     public boolean compare(Demo d)
34     {
35         return this.num == d.num;
36     }
37     */
38 }
39
40
41 public class ObjectDemo {
42
43     public static void main(String[] args) {
44         Demo d1 = new Demo(4);
45         Demo d2 = new Demo(5);
46
47         Demo d3  = d1;
48         System.out.println(d1.equals(d2));
49     }
50
51 }

09-面向对象(Object类toString())

时间: 2024-10-18 03:24:39

Java 学习 day08的相关文章

Java 学习笔记(2015.7.13~17)

Java 学习笔记(2015.7.13~17) Java this关键字 表示本类中的属性,调用本类中的方法 class Person {        private String name;         private int age;         public Person(String name, int age) {         this.name = name;//调用本类中的属性         this.age = age;//同上} //get&set方法:    

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入

Java学习第5天

---恢复内容开始--- 今天是2016年5月4号,今天是学习JAVA学习的第5天!今天的主要学习任务是对二维数组的学习. P96 3.7.5 二维数组 动态初始化 数据类型 数组名称 [][]=new 数据类型[行数][列数]   ; 如,int a[][]=new int[7][8]; 静态初始化 数据类型 数组名称 [][]=new 数据类型 [][]{ {值,值,...},{值,值,...},...}; 如,int a[][]=new int[][]{ {1,2,3},{54,6},{8

Java学习-008-判断文件类型实例

此文源码主要为应用 Java 如何判断文件类型的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-2 23:02:00,请知悉. Java 判断文件类型源码如下所示: 1 /** 2 * @function 判断文件类型 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java assertFileType

疯狂JAVA学习计划

? Java_StudyPlane ?2015/2/20 ????????大年初二 ????????雨天 1.5小时为1个课时. JAVA学习进度表

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi

【分享】不知道怎么学java?java学习路线送上!让你不再迷茫!

学习Java之前,先别急,静下心来好好想想:1)你对学习Java是否有兴趣?2)你是否能静下心来坚持不懈地学习?嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣.而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看(帖子后面我会分享一些java学习教程)Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA).(1)J2SE--Java 2 Platform Standard Edition,即JDK,它是三者的基础,属于桌面级应用开发:

Java 学习路线建议

在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可,切勿照搬.2.下面对于[第一部分]的推荐内容,目的是让你尽快成为一个可以参加工作的Java开发者,更适用于处于待业状态,准备转行Java的同学. 如果你是在校学生,务必要在学好基础(比如计算机系统.算法.编译原理等等)的前提下,再考虑去进行下面的学习.第一部分:对于尚未做过Java工作的同学,包括一