惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security Archives - TechRepublic
MongoDB | Blog
MongoDB | Blog
量子位
博客园 - 叶小钗
罗磊的独立博客
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
MyScale Blog
MyScale Blog
GbyAI
GbyAI
Help Net Security
Help Net Security
Y
Y Combinator Blog
Engineering at Meta
Engineering at Meta
Hacker News - Newest:
Hacker News - Newest: "LLM"
Latest news
Latest news
H
Hacker News: Front Page
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
S
Schneier on Security
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
Security @ Cisco Blogs
Recorded Future
Recorded Future
S
Securelist
博客园 - Franky
Application and Cybersecurity Blog
Application and Cybersecurity Blog
A
About on SuperTechFans
N
News and Events Feed by Topic
AI
AI
T
Tenable Blog
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX - 技术
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
L
LINUX DO - 热门话题
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google Online Security Blog
Google Online Security Blog
S
Security Affairs
Webroot Blog
Webroot Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 三生石上(FineUI控件)
C
Comments on: Blog
G
GRAHAM CLULEY

博客园 - Rainbow

正向代理与反向代理(转) Java equals()和hashCode()的作用 java 内存模型 java 集合 java string java 数据类型 Java 笔记 字符编码详解及由来(UNICODE,UTF-8,GBK)[转帖] C# 值类型和引用类型 说明 Android drawable文件夹含义 Android Button 单击事件 Android TextView setText 使用 转一篇博文 Java中==和equals的区别 FTP 链接上,但是列不出目录 出现:425 Can't open data connection Android开发中插入新的Activity CentOS常用命令 CentOS5.6 python2.4.3升级到2.7.2 yum命令全集详解
java 面向对象
Rainbow · 2012-01-11 · via 博客园 - Rainbow

2012-01-11 17:11  Rainbow  阅读(466)  评论()    收藏  举报

java最大的特色就是面向对象。面向对象的三大特性:封装,继承,多态。面向对象的内容非常庞大,基本上很少能在一个文章说完,就直接说说一些常见的问题吧。

  • 封装

    封装这个特性,从字面上应该多能理解。就是将一定独立功能或者数据按一定的约定俗成的方式组织起来。这个没有太多异议。就不多说了。

  • 继承

    java不支持多继承,那样会是程序变的复杂和不可控。所以只允许继承一个父类,可以多个接口。

  • 多态

    多态应该是面向对象最重要的内容也是最迷糊的地方。起码我在好长时间内没有明白多态的含义。多态说白了就是多种状态,也就是说同一个操作能产生的结果是不一样的。通常,多态伴随着继承而来。他们是密不可分的。

  • 面向对象的基础

    public class Person {
    
    	private int age;		//私有字段
    	
    	public int getAge()	//get属性 
    	{
    		return age;
    	}
    
    	public void setAge(int age) //set属性 
    	{
    		this.age = age;
    	}
    
    	public Person()	//无参构造函数
    	{
    		age=0;
    	}
    	
    	public Person(int age)	//有参构造函数
    	{
    		this.age=age;
    	}
    
    }

    上面是一个典型的类定义。public 是对类的访问级别。class是关键字。Persion是类名,在java中文件名必须和一个public类型的类名保持一致。

    • 构造函数:

    和类名一致,无返回类型的函数。一个类中默认会有一个无参的构造函数,就算没有手动书写,java也会自动添加。既然有无参构造函数,那肯定就有有参构造函数了。这样一来,一个类里面可以有多个构造函数的存在。这样就是方法重载的概念。

    • 对象的出生:

    当你抽象出类以后,其实并不能在程序中使用。必须创建一个具体的对象才能有意义。创建对象就直接使用 new关键字。新建一个对象。

    Person Andyliu=new Person();创建了一个刘德华(Andyliu)具体对象,当我们不知道他的年龄时,可以使用默认构造函数。new Person() 这个操作做了三件事:1.为对象开辟堆内存空间。2.调用Person类的构造方法 ()。3.返回新建对象的内存地址。
    当一个具体的对象创建成功以后,必须要有地方(内存)去存放它。java中值类型存放在 栈内存中,而引用类型存放在 堆内存中。Andyliu 是Person类型,他指向堆内存的某一个地址。对引用对象的任何操作多会影响到堆内存中的值。特别是在函数传参方面。

    image

    匿名对象:只使用一次的对象,成为匿名对象。典型常用方式:new Person().xxx();

    对象属性,方法:一个类包含了 属性和方法。那么每个具体对象的属性多是存放各自的内存空间中,互不干扰。但是方法是所有对象共用的。也就是说方法在内存只有一个。

    对象继承

  • 继承父类使用 extends 关键字。继承接口使用 implements 关键字。

  • 对象实例化顺序:

    1.static 静态 变量和方法。在new 之前,静态变量和方法并不依赖new 方法。这就是为什么我们可以直接使用的原因。当村长继承关系时: 父类static变量 ---->父类static方法 --->子类static变量 --->子类static方法

    2.非static 成员变量(普通的变量)。在new 之后。

    没有继承关系,初始化顺序:自己的变量 --->自己的构造函数

    有继承关系,初始化顺序:父类的变量 --->父类的构造函数 --->子类的变量 --->子类的构造函数

    3.非static 成员方法(普通的方法)。初始化顺序和普通的变量一样。

    image