面向对象基础十一

 

Code:
  1.    
  2.   
  3. Object 类  
  4. 内部类及匿名内部类()  
  5. 所有的类都必须继承自己Object类  
  6. 1、 复写equals()方法  
  7. 2、 复写toString()方法所有类都必须继承自Object类  
  8.    
  9.    
  10. 类之源------是最大的类,是所有类的子类,则一切对象都可以向Oebject类进行转换  
  11. ToString(): 在对象打印时默认调用,但是在默认情况下调用的是Object类的中的toString ().v如果一个类希望按自己的方式打印对象,则可以通过覆写的方式,将toString()方法覆写掉。  
  12.    
  13. //Object类是所有类的父类,如果一个类没有明确声明继承自那个类,则肯定会继承Ojbect类  
  14. class Person  
  15. {  
  16.        public String toString()  
  17.        {  
  18.               return "Hello World!!";  
  19.        }  
  20. }  
  21.    
  22. public class javaoo06  
  23. {  
  24.        public static void main(String []args)  
  25.        {  
  26.               Person p = new Person();  
  27.        }            System.out.println(p); //默认情况下打印对象地址,实际上就相当于调用对象中的toString方法  
  28.               System.out.println(p.toString());  
  29.    
  30. }  
  31. Person@c17164  
  32. Person@c17164  
  33.    
  34.    
  35.    
  36. class Person  
  37. {  
  38.        private String name;  
  39.        private int age;  
  40.        public Person(String name,int age)  
  41.        {  
  42.               this.name = name;  
  43.               this.age = age;  
  44.        }  
  45.        public String toString()  
  46.        {  
  47.               return "姓名:" + this.name + ", 年龄:" + this.age;  
  48.        }  
  49. }  
  50.    
  51. public class javaoo06  
  52. {  
  53.        public static void main(String []args)  
  54.        {  
  55.               Person p = new Person("HYJ",22);  
  56.               System.out.println(p);  
  57.        }  
  58. }  
  59.    
  60. 姓名:HYJ, 年龄:22  
  61.    
  62.    
  63. Equals方法是一个对象比较,在String 类中强调用的equals方法肯定是已经被String 类所覆写了。  
  64.    
  65.    
  66. class Person  
  67. {  
  68.        private String name;  
  69.        private int age;  
  70.        public Person(String name,int age)  
  71.        {  
  72.               this.name = name;  
  73.               this.age = age;  
  74.        }  
  75.        public String toString()  
  76.        {  
  77.               return "姓名:" + this.name + ", 年龄:" + this.age;  
  78.        }  
  79. }  
  80.    
  81. public class javaoo06  
  82. {  
  83.        public static void main(String []args)  
  84.        {  
  85.               Person p1 = new Person("HYJ",22);  
  86.               Person p2 = new Person("HYJ",22);  
  87.               System.out.println(p1.equals(p2)); //false  
  88.        }  
  89. }  
  90.    
  91.    
  92.    
  93. class Person  
  94. {  
  95.        private String name;  
  96.        private int age;  
  97.        public Person(String name,int age)  
  98.        {  
  99.               this.name = name;  
  100.               this.age = age;  
  101.        }  
  102.        public boolean equals(Object obj) // 传的是对象  
  103.        {  
  104.               if (!(obj instanceof Person))       //System.out.println(p1.equals("abc"));  
  105.               {  
  106.                      return false;  
  107.               }  
  108.               Person per1 = this;  
  109.               Person per2 = (Person)obj;  
  110.               boolean flag = false;  
  111.               if (per1 == per2)  
  112.               {  
  113.                      flag = true;  
  114.               }  
  115.               else  
  116.               {  
  117.                      if (per1.name.equals(per2.name)&&per1.age == per2.age)  
  118.                      {  
  119.                             flag = true;  
  120.                      }  
  121.               }  
  122.               return flag;  
  123.        }  
  124.        public String toString()  
  125.        {  
  126.               return "姓名:" + this.name + ", 年龄:" + this.age;  
  127.        }  
  128. }  
  129.    
  130. public class javaoo06  
  131. {  
  132.        public static void main(String []agrs)  
  133.        {  
  134.               Person p1 = new Person("HYJ",22);  
  135.               // Person p2 = new Person("HYJ",22);  
  136.               Person p2 = p1;  
  137.               //System.out.println(p1.equals(p2));  
  138.               System.out.println(p1.equals("abc"));  
  139.        }  
  140. }  
  141.    
  142.    
  143.    
  144. 内部类:  
  145. 1、 内部类的定义:同部类的使用  
  146. 2、 内部在如何被外部调用?  
  147.    
  148. //class 外部类  
  149. //{  
  150. //     class 内部类  
  151. //     {  
  152. //     }  
  153. //}  
  154.    
  155. class Outer  
  156. {  
  157.        private String info = "LXH -- MLDN";  
  158.        //内部类  
  159.        class Inner //定义  
  160.        {  
  161.               public void print()  
  162.               {  
  163.                      System.out.println("INFO = " + info);  
  164.               }  
  165.        }  
  166.        public void fun() //方法  
  167.        {  
  168.               new Inner().print();  
  169.        }  
  170. }  
  171.    
  172. public class javaoo06  
  173. {  
  174.        public static void main(String []args)  
  175.        {  
  176.               Outer p = new Outer();  
  177.               p.fun();  
  178.        }  
  179. }  
  180.    
  181. class Outer  
  182. {  
  183.        private String info = "HYJ--MLDN";  
  184.        public String getInfo()  
  185.        {  
  186.               return this.info;  
  187.        }  
  188.        public void setInfo(String info)  
  189.        {  
  190.               this.info = info;  
  191.        }  
  192.        //内部类  
  193.        public void fun()  
  194.        {  
  195.               new Inner(this).print();  
  196.        }  
  197. }  
  198.    
  199. class Inner  
  200. {  
  201.        private Outer out = null;  
  202.        public Inner(Outer out)  
  203.        {  
  204.               this.out = out;  
  205.        }  
  206.        public void print()  
  207.        {  
  208.               System.out.println("INFO = " + out.getInfo());  
  209.        }  
  210. }  
  211.    
  212. public class javaoo06  
  213. {  
  214.        public static void main(String []args)  
  215.        {  
  216.               Outer p = new Outer();  
  217.               p.fun();  
  218.        }  
  219. }  
  220. 内部类确实可以节省代码,但是造成类的结构混乱。内部内本身也会产生*.class文件  
  221.    
  222.    
  223. class Outer  
  224. {  
  225.        private String info = "LXH---MLDN";  
  226.        //内部类  
  227.        class Inner  
  228.        {  
  229.               public void print()  
  230.               {  
  231.                      System.out.println("INFO = " + info);  
  232.               }  
  233.        }  
  234. }  
  235.    
  236. public class javaoo06  
  237. {  
  238.        public static void main(String []args)  
  239.        {  
  240.               Outer p = new Outer();  
  241.               Outer.Inner in = p.new Inner();  
  242.               in.print();  
  243.        }  
  244. }  
  245.    
  246. 实际上,内部类可以在任何位置定义,例如方法中  
  247.    
  248. 在方法中定义的内部类如果要访问方法中的变量,则变量前必须加final,但是此final并不代表说是一个常量。只是一个简单的标记而已。  
  249. class Outer  
  250. {  
  251.        private String info = "LXH---MLDN";  
  252.        public void fun(final int len)  
  253.        {  
  254.               class Inner  
  255.               {  
  256.                      public void print()  
  257.                      {  
  258.                             System.out.println("len = " + len);  
  259.                             System.out.println("INFO = " + info);  
  260.                      }  
  261.               }  
  262.               new Inner().print();  
  263.        }  
  264. }  
  265.    
  266. public class javaoo06  
  267. {  
  268.        public static void main(String []args)  
  269.        {  
  270.               new Outer().fun(10);  
  271.        }  
  272. }  
  273.    
  274. 匿名内部类,这个内部类只使用一次,一次之后就不用了,匿名内部类是在抽象类和接口的基础上发展起来的。  
  275.    
  276. interface A  
  277. {  
  278.        public void fun();  
  279. }  
  280.    
  281. class B implements A  
  282. {  
  283.        public void fun()  
  284.        {  
  285.               System.out.println("MLDN ---LXH");  
  286.        }  
  287. }  
  288.    
  289. class C  
  290. {  
  291.        public void fun2()  
  292.        {  
  293.               this.print(new B());  
  294.        }  
  295.        public void print(A a)  
  296.        {  
  297.               a.fun();  
  298.        }  
  299. }  
  300.    
  301. public class javaoo06  
  302. {  
  303.        public static void main(String []args)  
  304.        {  
  305.               new C().fun2();  
  306.        }  
  307. }  
  308.    
  309.    
  310. ###################################  
  311.    
  312. interface A  
  313. {  
  314.        public void fun();  
  315. }  
  316.    
  317. class C  
  318. {  
  319.        public void fun2()  
  320.        {  
  321.               this.print(new A()  
  322.               {  
  323.                      public void fun()  
  324.                      {  
  325.                             System.out.println("MLDN---LXH");  
  326.                      }  
  327.               }  
  328.               );  
  329.        }  
  330.        public void print(A a)  
  331.        {  
  332.               a.fun();  
  333.        }  
  334. }  
  335.    
  336. public class javaoo06  
  337. {  
  338.        public static void main(String []args)  
  339.        {  
  340.               new C().fun2();  
  341.        }  
  342. }  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值