黑马程序员java 三篇《面向对象上:类》
来源:互联网 发布:阶层 知乎 编辑:程序博客网 时间:2024/05/17 02:25
原来学的编程都没有这个概念,突然出来个类,我现在知道他为啥叫类了,因为学起来真的很累……类: 动物 猫 狗 都是对象
类:可以将数据和函数封装在一起,数据表示属性,函数表示类的行为;定义类就要定义类的属性和行为(方法);
class person
{
int age; //定义person 的属性age
void showage() //行为(方法)输出属性age
{
//注意如果这个地方重新定义一个 age 那么下面的age 为 函数内部定义的age
System.out.println("年龄为"+age);
}
}
对象:对象是由类产生的,要实现类的属性和行为(方法),就必须创建具体的对象
person p1=new person ;
//创建一个对象p1 ,p1有age属性及 showage()方法;
//创建对象后就可以用 对象名.对象属性 的格式访问
// 如 p1.age p1.showage();
//每一次的new 都是一个新的对象
对象的比较:==与equals()
== 比较两个变量的值是否相等;
equals() 比较两个对象的内容是否一致
如:String s1= new String("abc") //创建 String 类型的s1 值为 abc
String s2= new String("abc") //创建 String 类型的s2 值为 abc
String s3= s1// 对象 s3 引用 s1
s1==s2 flase//s1 s2 两个对象
s1==s3 true //s3引用的s1
s1.equals(s2) true // 内容一致
s1.equals(s3) true // 对象 s3 引用 s1
匿名对象: new person().showage(); //没有使用new 创建对象直接调用 showage()方法
使用:1、对象只需要执行一次方法的时候;2、作为参数传递给一个函数时可以使用
封装:为了保护类的成员属性不收外界的随意修改; 如age 需要使用私有 private ,private int age 这样 age 外面就访问不了 只能类内部成员访问;public全局访问
封装目的:隐藏类的实现细节;只能通过事先定制好的方法来访问;便于修改增强可维护性;可进行数据检查
构造函数:每一个类中都有一个与之相同的函数(方法),这个函数就是构造函数,它可以为类的成员变量进行初始化工作,对象产生时就执行构造函数,如果不定义就自动生成一个空的构造函数;特征:与类名相同;没有返回值(不能使用return)
构造函数可以有多个但 参数不能相同(重载),默认的构造函数没有参数,没有任何代码,
构造函数的参数与调用的参数必须一致 ,否则出错,构造函数可以有多个 参数类型需不同
This:用于引用另外一个对象的成员,同类成员前可不加this
class A
{
String name;
public A(String x)
{
name=x;
}
public void func1()
{
System.out.println("func1 of "+name+" is calling");
}
public void func2()
{
A a2=new A("a2");
this.func1(); //这里加不加this 是一个效果,因为在同类中
a2.func1();
}
}
class demo
{
public static void main(String[] args)
{
A a1=new A("a1");
a1.func2();
//System.out.println("Hello World!");
}
}
输出结果:
func1 of a1 is calling // 这句是a1.func2(); this.func1()输出
func1 of a2 is calling // 这句是func2 语句中a2.func1 的输出
垃圾回收:简单理解就是程序在运行中会产生一些数据和对象,使用完成后就成为垃圾,(过河拆桥啊)
class A
{
public void finalize() //finalize() 垃圾回收执行语句
{
System.out.println("going");
}
}
class demo
{
public static void main(String[] args)
{
new A();
System.gc(); //强制启动垃圾回收器
}
}
函数的参数传递:注意全局变量和局部变量的区别 局部与全局不能相互影响。
static:静态变量 static String country="中国"
class A
{
static String country="中国";
}
class demo
{
public static void main(String[] args)
{
A a= new A();
A b= new A();
System.out.println(a.country);
System.out.println(b.country);
a.country="China";
System.out.println(a.country);
System.out.println(b.country);
}
}
输出结果:
中国
中国
china
China
注意:static 定义的变量 改变则全部改变,正常情况下定义static 后就不需要改变
静态方法 静态方法可以直接使用 类名.成员 的格式
静态代码块 类被载入时,静态代码块被执行,且只被执行一次,经常用于类属性的初始化,
static { System.out.println ("静态代码块,只被执行一次哦");}
内部类:在类中也可以定义类 内部类可以通过创建对象从外部类之外被调用,需将内部类声明为public
- 黑马程序员java 三篇《面向对象上:类》
- 黑马程序员 Java 面向对象三
- 黑马程序员 Java基础<三>--->面向对象
- 黑马程序员 Java面向对象<三> 异常
- 黑马程序员-----JAVA面向对象(三)
- 黑马程序员-Java面向对象(三)
- 黑马程序员,Java基础知识三:面向对象
- 黑马程序员 Java基础 ---> 面向对象(上)
- 黑马程序员----java之面向对象(上)
- 黑马程序员-Java基础:面向对象(上)
- 黑马程序员---Java面向对象(上)
- 黑马程序员java基础篇----面向对象总结(上)
- 黑马程序员--面向对象(三)
- 黑马程序员- 面向对象上
- 黑马程序员-面向对象上
- 黑马程序员--------------------面向对象(上)
- 黑马程序员>>>面向对象[>上<]
- 黑马程序员--面向对象(上)
- 把握国外买家的购买心理和消费习惯
- 外贸营销中确保交易成功的小贴士
- Dalvik和标准Java虚拟机之间的区别
- 348. One's words reflect one's thinking. 言为心声
- 转]android开发环境搭建(for 驱动开发人员) .
- 黑马程序员java 三篇《面向对象上:类》
- 1001. A+B Format
- 初学SSDT遇到的一个指针问题
- 1002. A+B for Polynomials
- 1005. Spell It Right
- 1006. Sign In and Sign Out
- 1009. Product of Polynomials
- Linux下 tar.xz格式文件的解压方法
- MVC模式