死亡笔记1---java语言的四大特性以及方法重载 方法重写的区别以及new创建对象所用到的知识点

原创 2015年07月07日 15:13:54

一 :开发:其实就是找对象使用,没有对象就创建一个对象..

找对象--(建立对象)-使用对象-维护对象的关系


java语言的第一特性:封装

什么是封装? 

public class User {
	private String nameId;
	private String passw;
	private String sex;
	private String date;
	
	public User() {
		super();
	}

	public User(String nameId, String passw, String sex, String date) {
		super();
		this.nameId = nameId;
		this.passw = passw;
		this.sex = sex;
		this.date = date;
	}

	public String getNameId() {
		return nameId;
	}

	public void setNameId(String nameId) {
		this.nameId = nameId;
	}

	public String getPassw() {
		return passw;
	}

	public void setPassw(String passw) {
		this.passw = passw;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	@Override
	public String toString() {
		return "用户 [nameId=" + nameId + ", passw=" + passw + ", sex=" + sex
				+ ", date=" + date + "]";
	}
	 
}

封装就是将变化隔离

封装后的代码便于使用

提高代码的复用性

提高了安全性

封装的原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共的方法对其访问.

这个原则说的通俗一点:表现在程序中,就是把属性私有化,将方法公开化..


java语言的第二特性:继承

什么是继承?

public abstract class Animal {
	public String name;
	public int age;
	public Animal(){
		super();
	}
	public abstract void eat();
	
}



public class Dog extends Animal{
	public Dog(){
		
	}
	public Dog(String name,int age){
		this.name=name;
		this.age=age;
	}
	@Override
	public void eat(){
		System.out.println("狗吃骨头..");
	}
}

把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系.这多个类就具备了这些内容,这个关系叫继承.

子类继承父类,子类拥有父类的特性,同时子类拥有自己的个性..而且继承也是多态的前提. 所有类的基类都是Object.

继承的关键字是:extends

格式:

 class 子类名 extends 父类名{}

继承的好处:提高了代码的复用性   提高了代码的维护性  让类与类产生了一个关系,是多态的前提

继承的弊端:让类的耦合性增强. 这样某个类的改变,就会影响其他的和该类相关的类.   打破了封装性

开发的原则:低耦合,高内聚

耦合:类与类的关系

内聚:自己完成某件事情的能力

java中继承的特点:java中类只支持单继承  java中可以多层(多重)继承

继承需要注意的事项:

子类不能继承父类的私有成员

子类不能继承父类的构造方法,但是可以通过surper去访问 

不要为了部分功能而去继承

子类的构造方法默认回去访问父类的无参构造


java语言的第三特性:多态

什么是多态?

	public static void main(String[] args){
                Animal an=new Dog();	
                an.eat();
		Animal an=new Cat();
		an.eat();
		
	}

输出结果:
狗吃骨头...
猫吃鱼...

同一个对象在不同时刻体现出来的不同状态

父类的引用指向了自己的子类对象

父亲的引用也可以接受自己的子类对象

多态的前提:有继承或者实现关系

有方法重写

有父类或者父接口引用指向子类对象

多态可分为:具体类多态 抽象类多态 接口多态

多态的好处:提高了代码的维护性(继承体现)  提高了代码的扩展性(多态体现)

多态的弊端:父不能使用子类的特有功能

现象:子可以当做父使用,父不能当做子使用

多态中的转型:

向上转型:从子到父

向下转型:从父到子

注意:千万不要将父类对象转换成子类类型,多态自始至终都是子类对象在做着变化


java语言的第四特性:抽象

把多个共性的东西提取到一个类中,这是继承的做法

但是呢,这多个共性的东西,有些时候,方法签名一样,但是方法体不同

也就是说,方法声明一样,但是每个具体的对象的对象在具体实现的时候内容不一样

所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体

而一个没有具体的方法体的方法就是抽象方法

在一个类中如果有抽象方法,该类必须定义为抽象类


抽象类的特点:

抽象类和抽象方法必须用关键字abstract修饰

抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类

抽象类不能实例化

抽象类的子类:1是一个抽象类 2是一个具体类,这个类必须重写抽象类中的所有抽象方法

关于抽象类的几个小总结:

抽象类有构造方法,但是不能被实例化,那么构造方法有什么用?

用于子类访问父类数据的初始化

一个类如果没有抽象方法,却定义为了抽象类,有什么用?

为了不让创建对象

abstract不能和哪些关键字共存?

final冲突

private 冲突

static 无意义


二: Override和Overload的区别:

方法重载:

方法的名称相同

不以返回值区分

参数的个数 类型 顺序其一不同即可

重写:

发生在子父类之间

要求方法签名一样(返回值类型 方法名和参数列表一样,子类的方法访问权限必须大于等于父类)



  三:new一个对象,都做了那些事情?

eg: Person p=new Person("张三",21);

1 因为new用到了Person.class,所以会先找到Person.class文件,并加载到内存中

2执行该类的static代码块,如果有的话,给Person.class进行初始化

3在堆内存中开辟空间,分配内存地址

4在堆内存中建立对象的特有属性,并进行默认初始化

5对属性进行显初始化

6对对象进行构造代码块初始化

7对对象进行构造函数初始化

8将内存地址赋给栈内存的p变量

创建对象完成...




建立一个对象模型的时候,为什么要重写hashCode与equals方法

为了阐明其作用,我们先来假设有如下一个Person类。 class Person { public Person(String name, int age) { this.na...
  • qq_27093465
  • qq_27093465
  • 2016年06月01日 15:30
  • 1317

java面向对象一:实现继承、重载、重写

一、继承:根据现有类(一个写好的类)的功能来创建新类(利用现有类创建)的过程 二、多态:一个对象不同的表现形态(重载/重写)...
  • heart_1014
  • heart_1014
  • 2016年07月13日 15:22
  • 497

C++创建对象的两种方法(C++用new和不用new创建类对象)

from:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html   在C++里,有两种方法创建对象: 方法一: Cl...
  • lz20120808
  • lz20120808
  • 2014年11月05日 21:36
  • 9154

PHP面向对象之重写与重载

  • binghui1990
  • binghui1990
  • 2013年06月16日 11:38
  • 10394

方法重写与方法重载的区别

方法重写(override):即方法覆盖。指的是父子类中方法的关系。父类A中有方法method1,在子类中想要使用method1这个方法签名而又要实现与父类method1方法不同的功能,这个时候就要用...
  • u010921701
  • u010921701
  • 2016年10月31日 17:15
  • 1320

方法重写、重载、以及它们的区别

一,方法    是一段用来完成特定功能的代码片段。方法在其他语言中也叫函数。    在方法里面定义局部变量不能有修饰符,final除外    语法    [修饰符]+[修饰符]+返回值类型+方...
  • a765717
  • a765717
  • 2016年02月23日 14:10
  • 3619

方法重写和方法重载的区别

注:转载之>>>http://www.cnblogs.com/bluestorm/archive/2012/03/01/2376236.html java中重载与重写的区别 ...
  • b1198103958
  • b1198103958
  • 2015年06月15日 21:35
  • 1164

对于自定义类,重写equals方法和hashCode方法的技巧

参考:http://blog.csdn.net/fenglibing/article/details/8905007 对于自定义的类,如果要比较两个对象是否相同,就需要重写equals方法。举一个例...
  • Genius_zz
  • Genius_zz
  • 2016年09月16日 21:15
  • 4276

New一个子类对象的时候是否创建了父类的对象

首先:很坚决的说没有创建父类的对象!!!1.首先从子类到直接父类,依次执行父类的构造方法(没有显示调用构造方法的情况下),这个过程执行父类成员的初始化。 我仔细把书上继承那章又读了好几遍!!!书上说...
  • Minimum_Time_Hour
  • Minimum_Time_Hour
  • 2017年07月30日 10:19
  • 935

易混淆的概念--重写、重载、重用、重构

重写:一般在面向对象编程语言中重写指的是方法重写,方法重写又称方法覆盖,就是子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,厕是想作一定的修改,这就需要对...
  • czhxinyu
  • czhxinyu
  • 2014年03月27日 13:37
  • 1138
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:死亡笔记1---java语言的四大特性以及方法重载 方法重写的区别以及new创建对象所用到的知识点
举报原因:
原因补充:

(最多只允许输入30个字)