面向对象特点
1. 封装
2. 继承
3. 多态
没有封装举例:
迅雷 核心功能 下载
50 个程序员 50 亲戚
比如有下载类
下载速度
下载方法(URL )
下载方法(种子)
没有封装时,将不受控制
封装
将类中的属性或者方法对外界隐藏 然后提供公共的访问方式
成员变量私有化 是封装的一种体现
private 私有(权限修饰符)
java bean规范
1.成员变量私有化(并且提供set /get 方法)
代码举例
public class Demo04{
public static void main (String[] args){
}
}
class Student{
private String name;
private int age;
public void sayHi (){
String name = "刘荣胜" ;
System.out .println(name + " " + age);
}
public String getName (){
return name;
}
public int getAge (){
this .age = age;
}
}
代码举例 :猫类
需求:
属性:
猫名/颜色/ 种类
方法:
会吃鱼/会卖萌/ 会找老鼠
构造方法:初始化成员变量
注意:
1. 构造方法 没有返回值 甚至不用写返回的类型
2. 构造方法的方法名 与 类名相同
格式:
关键字 构造方法名(){
}
package com.lanou3g.bean;
public class Cat{
private String name;
private String color;
private String type;
public Cat (){
name = "小花" ;
color = "白色" ;
type = "中华田园猫" ;
}
public void eat (){
System.out .println("猫 会 吃鱼" );
}
public void fun (){
System.out .println("猫 会 卖萌" );
}
public void zhua (){
System.out .println("猫 会 抓 老鼠" );
}
public String getName (){
return name;
}
public void setName (String name){
this .name = name;
}
public String getColor (){
return color;
}
public void setColor (String color){
this .color = color;
}
public String getType (){
Return type;
}
public void setType (String type){
this .type = type;
}
public void sayHi (){
System.out .println("姓名:" + name);
System.out .println("颜色:" + color);
System.out .println("类别:" + type);
}
}
全限定类名
package com.lanou3g.bean1;
public class Cat{
public void sayHi (){
System.out .println("我是bean1包下得cat" );
}
}
测试猫类
//另建一个类 名为CatTest,用来测试上述cat类
package com .lanou 3g.bean
public static void main(String[] args){
//构造方法 如何调用
//构造方法是不用咱们调用的
//当你创建对象的时候 系统会帮你调用构造方法
Cat cat = new Cat()
cat.setName ("小花" )
cat.setColor ("白色" )
cat.setType ("中华田园猫" )
cat.sayHi ()
//创建bean1包下得 Cat对象
//如果类名相同的话 创建对象的时候
//要使用全限定类名
com .lanou 3g.bean 1.Cat cat2 = new com .lanou 3g.bean 1.Cat ()
cat2.sayHi ()
}
书写位置
成员变量(实例变量) 写在类中 方法外
成员方法(实例方法) 写在类中
如何创建对象
类名 对象名 = new 类名();
成员变量与局部变量的区别
书写位置:
成员变量 写在类中方法外
局部变量 写在方法中或者方法的声明上
内存中得位置:
成员变量: 存在于堆类存中
局部变量: 存在栈内存中
初值:
成员变量 有默认的初值 0 或者 null
局部变量 没有默认值 如果要使用的话 必须要给初值
生命周期
成员变量 随着对象的创建而创建 随着对象的销毁而销毁
局部变量 随着方法存在
匿名类对象
匿名对象:没有名字的对象
1.如果你只调用方法的话 这时可以使用匿名对象(测试时候会用)
2.匿名对象可以当做参数进行传递
好处:当参数时 代码简便
弊端:无法直接修改里面的值
匿名对象代码举例
public class Demo03{
public static Person fun (String name){
Person person = new Person();
person.name = name;
person.sayHi();
return person;
}
public static Person fun1 (String name, Person person){
person.name = name;
return person;
}
public static void main (String[] args){
Person person = fun("谢霆锋" );
Person person1 = new Person();
Person person2 = fun1("刘德华" ,person1);
person2.sayHi();
Person person3 = fun("周润发" , new Person());
person3.sayHi();
}
}
class Person {
String name;
int age = 9 ;
public Person (){
}
public Person (String name){
this .name = name;
}
public sayHi (){
System.out .println("姓名:" + name);
System.out .println("年龄:" + age);
}
}