`
caiwb1990
  • 浏览: 314752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java总结-面向对象进阶

    博客分类:
  • java
 
阅读更多
接口:
	它是一个特殊的抽象类。里面都是抽象方法。
	格式:
		通过interface来定义。
		该接口中的成员具备了特定的修饰符。
		成员包括:成员常量,和抽象方法。
		这些成员都是公有的。

		interface Demo
		{
			public static final int x = 3;
			pubilc abstract void show();
		}

	接口的出现将多继承这种机制通过多实现的方法体现。
	屏蔽了多继承出现的安全隐患。
	原理:因为接口中的方法都没有方法体。


	特点:
	1,接口的出现是一个对外暴露的规则。
	2,接口的出现给程序提高了功能扩展。
	3,接口的出现降低了程序间的耦合性。

	早期设计,为了扩展主板功能,可以将网卡焊在主板上,但是,虽然扩展了功能,耦合性却提高了。
	不方便与后期扩展。

	为了提高扩展性,降低主板和其他功能板卡的耦合性。
	定义了一个规则。主板只要使用这个规则即可。
	后期无论出现什么样的板卡,只要按照这个规则来制作主板都可以使用。

	这样降低了主板和板卡的耦合性,以及提高扩展性。


	主板的例子。
	interface PCI
	{
		void open();
		void close();
	}
	class MainBoard
	{
		/*useNetCard(NetCard nc)
		{
		
		}
		*/
		void usePCI(PCI p)//PCI p = new NetCard();
		{
			if(p==null)
				return;
			p.open();
			p.close();
		}
	}

	class Main
	{
		main()
		{
			MainBoard mb = new MainBoard();
			mb.usePCI(new NetCard());
		}
	}

	-------

	class NetCard implements PCI
	{
		public void open(){}
		public void close(){}
	}

	类与接口之间是实现关系,类与类之间是继承关系。
	接口与接口之间是继承关系,而且接口可以多继承。
	
	类可以在继承一个类的同时实现多个接口。

	abstract class Xueyuan
	{
		abstract void study();
		void sleep(){}
	}

	interface Smoke
	{
		void smoking();
	}

	class Zhangsan extends Xueyuan implements Smoke
	{
		void study(){}
		void smoking(){}
	}

------------------------------
多态:
	多种形态。
	在方法上有体现:重载,覆盖。
	在对象上也有体现。因为实例可以具备多种类型。
	在程序中的体现:父类或者接口的引用指向了自己的子类对象。

	多态的出现:提高了程序的扩展性。
	前提:  1,必须要有关系。
		2,出现覆盖操作。


	局限性:在通过多态设计时,不可以使用后期子类的特有方法。
	interface 动物
	{
		void shout();
		void move();
	}

	class 猫 implements 动物
	{
		public void shout()
		{
			System.out.println("喵喵");
		}
		public void move()
		{
			System.out.println("猫步 ");
		}
		public void 抓老鼠()
		{
			
		}
	}

	class 狗 implements 动物
	{
		public void shout()
		{
			System.out.println("汪汪");
			
		}
		public void move()
		{
			System.out.println("狗步");
		}
	}

	class 动物基本动作
	{
		void 动作(动物 z)
		{
			z.shout();
			z.move();
		}
	}

	main()
	{
		猫 x = new 猫();
		//x.shout();
		//x.move();
		动物基本动作 zz = new 动物基本动作();
		zz.动作(x);
		zz.动作(new 狗());


		//父类或者接口引用指向子类对象。
		动物 a = new 猫();//猫在向上转型。
		a.shout();
		a.move();

		show(a);
		
	}

	public static  void show(动物 x)
	{
		if(a instanceof 猫)
		{
		猫 c = (猫)a;//向下转型。
		注意:无论怎么转,自始至终都是子类对象在变化。
		c.抓老鼠();
		}
	}
	instanceof关键字:判断对象是否所属于指定的类或者接口。
	1,为了增强健壮性。
	2,如果子类是有限的,可以通过该关键性进行判断。

	面试示例:
	我就是一个对象,如果应聘到贵公司,我是就是员工的一种体现形态。
	//那么我回到家,就是孩子的一种体现形态。


-----------------------------------------

Object对象:所有对象的父类。
	定义了所有对象都具备的方法:
	1,boolean equals(Object obj);判断两个对象是否相同。其实是在判断对象的地址值。
		return this==obj;
	2,String toString():所有对象都有字符串表现形式。
		结果是:类名@对象的哈希值。
		如果输出语句直接打印引用类型的实体,那么默认会调用toString()方法。
		Demo d = new Demo();
		System.out.println(d);
		System.out.println(d.toString());  

		return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
	3,Class getClass():获取对象所属的字节码文件对象。
	4,int hashCode():获取对象的哈希值,也就是在内存中的位置。
	
	5,void finalize():垃圾回收方法。是jvm自动调用。我们也可以手动调用一下。通过System.gc();
	注意:
	每一个对象都有可能有自己的判断对象相同的方法,以及对应的特有字符串表现形式。
	所以,通常都会复写Object类中的方法。定义已有功能的特有实现方式。

	

----------------------------------------

匿名内部类:
	其实就是内部类的一种简写形式 。
	格式:new 父类或者接口名(){}
	其实匿名内部类其实就是一个匿名的子类对象。这个对象有点胖。

	前提:
	1,内部类必须要继承外部其他类或者实现了外部接口。
	2,通常会有覆盖操作。
	interface Demo
	{
		void show();
	}

	class Outer
	{
		class Inner implements Demo
		{
			public void show(){}
		}

		void method()
		{
			new Inner().show();
		}
	}

	class Outer
	{
		void method()
		{
			new Demo()
			{
				public void show(){}
			}.show();
		}
	}


	class DemoImpl implements Demo
	{
		public void show(){}
	}

	class Outer
	{
		void method()
		{
			new DemoImpl().show();
		}
	}

	当一个类或者接口的子类,只需要创建一个对象调用成员时,也可以写成匿名内部类。

	
	abstract class Test
	{
		abstract void funca();
		abstract void funcb();
	}
	
	class Code
	{
		//补全代码。
		static Test method()
		{
			return new Test()
			{
				void funca(){}
				void funcb(){}
			};
		}
	}

	main()
	{
		Test t = Code.method();
		t.funca();
		t.funcb();
	}




	class Demo
	{
		
	}

	class DemoMain
	{
		void function()
		{
			new Demo()
			{
				public void show(){}
			}.show();
		}

		void method()
		{
			new Object()
			{
				public void show(){}
			}
		}
	}


	class ObjDemo
	{

		class Inner extends Object
		{
		}
		void method()
		{
			new Object()
			{
				void show()
				{
					System.out.println("haha");
				}
			}.show();
		}
	}

	class  ObjectInner
	{
		public static void main(String[] args) 
		{
			new ObjDemo().method();
		}
	}
	
	其实很简单,看多了,用多了,就习惯了。

--------------------------------
	
	异常:
	程序运行时发生不正常情况。
	这种不正常情况,java对其进行描述。
	形成体系。
	一种是不需要处理的,Error,一种是可以处理的Exception。

	这两种也具备共性,比如,都给不正常情况定义了内容,都给不正常情况定义了名称。

	Throwable:异常和错误都具备可抛性。
		|--Error
			|--NoClassDefFoundError
		|--Exception
			|--RuntimeException
				|--NullPointerException
	常见方法:
		1,String getMessage():获取异常信息。
		2,String toString():异常对应的字符串表现形式:包含异常类名以及异常信息。
		3,void printStackTrace():打印异常在堆栈中的信息。
					包含:异常类名,异常信息。以及异常出现在程序中的位置。

	在定义功能时,可以在方法上通过throws关键字标识该功能因为参数的原因所发生不正常情况。
	以便于调用者进行处理。

	异常处理的两种方式:
	1,通过throws将异常抛出。
		如果不断的抛出,最终会被jvm的默认异常处理机制完成处理,但是程序会停止。
	2,通过try catch finally,完成对异常的处理。

分享到:
评论

相关推荐

    day12-面向对象进阶语法.xmind

    day12-面向对象进阶语法.xmind

    JAVA面向对象编程进阶(精选)

    java面向对象编程进阶,提升java编程能力

    02-java语言进阶源码

    1. **面向对象** (day01-面向对象, day03-面向对象, day08-集合): 面向对象是Java的基础,包括类、对象、封装、继承、多态等概念。学习这些章节可以帮助你更好地设计和实现复杂系统。面向对象设计原则如单一职责原则...

    由浅入深学Java-基础、进阶与必做

    1. Java语言概述:Java语言的特性,比如面向对象、平台无关性、安全性、多线程等。 2. Java开发环境搭建:了解如何下载和安装Java开发工具包(JDK),配置环境变量,以及如何使用集成开发环境(IDE)如IntelliJ ...

    面向对象进阶,面向对象进阶

    面向对象编程(Object-Oriented Programming,简称OOP)是软件开发中的一种核心思想,尤其在Java这样的语言中被广泛采用。本节我们将深入探讨面向对象的进阶概念,包括封装、继承、多态以及接口等核心原则,帮助...

    Java进阶学习资料.zip

    Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、健壮性和安全性。在Java进阶学习中,你需要掌握以下几个关键的知识点: 1. 高级数据结构与算法:理解并能熟练运用ArrayList、LinkedList...

    3.Java面向对象进阶(上篇)

    3.Java面向对象进阶(上篇)

    JavaSE进阶-01-面向对象.pdf

    在Java编程语言中,面向对象特性是其核心概念之一,本资料主要讲解了JavaSE进阶中的面向对象相关知识,包括final关键字、抽象类、接口、抽象类与接口的区别、Object类、package和import以及访问权限控制。...

    2011.06 - Java语言程序设计-进阶篇(原书第8版

    1. 面向对象的高级特性:在进阶篇中,会深入探讨Java中面向对象的高级特性,比如抽象类、接口、内部类、匿名类、继承和多态等概念。理解这些概念有助于编写更加模块化、可重用的代码。 2. 集合框架:Java集合框架...

    面向对象进阶1111111111

    面向对象进阶1111111111

    Javascript 面向对象的JavaScript进阶

    ### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...

    2020老杜最新版Java零基础进阶视频教程-面向对象课件

    【Java面向对象基础】 在Java编程中,面向对象是核心概念之一。面向对象编程(OOP)基于类和对象的概念,允许我们通过封装、继承和多态性来组织和管理代码。以下是一些关于Java面向对象的基础知识: 1. **final...

    Java语言程序设计-进阶篇(原书第10版 中英文)

    1. 面向对象编程:Java是一种纯面向对象的语言,进阶篇会深入讲解类、对象、封装、继承、多态等面向对象的基本概念和应用。通过理解和掌握这些概念,读者可以更好地设计和实现复杂的软件系统。 2. 异常处理:Java中...

    第5章 面向对象编程进阶.ppt

    第5章 面向对象编程进阶.ppt

    JAVA-SE入门学习——第六讲面向对象进阶

    在Java SE的学习过程中,面向对象进阶是一个重要的环节,它涵盖了案例驱动模式、分类思想、分包思想以及在实际项目中的应用。下面将详细阐述这些知识点。 首先,案例驱动模式是一种有效的学习和编程方法。它的核心...

    面向对象进阶,高级进阶,萌新

    面向对象进阶,高级进阶,萌新

    Java面向对象(进阶)- 拼电商客户管理系统

    Java 面向对象(进阶)- 拼电商客户管理系统 本资源摘要信息主要介绍 Java 面向对象(进阶)- 拼电商客户管理系统的设计和实现,涵盖了面向对象编程的主要知识点,包括类结构的使用、对象的创建与使用、类的封装性...

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

Global site tag (gtag.js) - Google Analytics