Java面向对象
2018-07-16 02:38:14来源:博客园 阅读 ()
1:局部变量和成员变量
? (1)在类中位置不同
? 成员变量:在类中方法外定义
? 局部变量:在方法中定义或方法参数中定义
? (2)在内存中的位置不同
? 成员变量:在堆内存中
? 局部变量:在栈内存中
? (3)生命周期不同
? 成员变量:随着对象的创建而存在,随着对象的消失而消失
? 局部变量:随着方法的调用而存在,随着方法的消失而消失
? (4)初始化值不同
? 成员变量:有默认值
? 局部变量:没有默认值,必须定义、赋值后才能使用
2:形式参数
? 基本类型:形式参数的改变对实际参数没有影响
? 引用类型:形式参数的改变直接影响实际参数的值
? 当看到一个方法需要的参数是一个类时,就应该知道这里需要的是一个具体的实例对象
3:匿名对象
? (1)匿名对象就是没有名字的对象 格式: new 类名();
? (2)应用场景:
? A:单独只调用一次方法的时候 : new 类名().方法();
? B:可以当做实际对象参数 : StudentTest(new Student());
4:封装、封装的体现
? (1)封装就是隐藏不需要对外开放的成员属性、方法,对外提供公共的访问方式
? (2)封装的好处:
? A:隐藏实现细节,提供公共访问方式
? B:提高代码的复用性
? C:提高代码的安全性
? (3)设计原则 把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式 (4)private是封装的一种体现。 封装:类,方法,private修饰成员变量和成员方法
4.2:private关键字
? (1)私有的意义,可以修饰成员变量和成员方法
(2)特点: 被private修饰的后的成员只能在本类中被访问
(3)private的应用: 以后再写一个类的时候: 把所有的成员变量给private了 提供对应的getXxx()/setXxx()方法
5:this关键字
? (1)this关键字代表当前类的引用对象
? 个人理解: this.age == 类的对象名.age (访问的是成员变量)
? (比如Student类,Student s = new Student(); this.age == s.age )
6:构造方法
? (1)构造方法作用:用于对对象的数据初始化
? (2) 构造方法 格式(特点): A:方法名和类名相同 B:没有返回值类型,连void都不能有 C:没有返回值
? (3)构造方法注意事项:
? A:如果我们没有写构造方法,系统会默认给我们提供一个无参的构造方法
? B:如果我们给出了构造方法(有无参都算),系统将不再给出 无参构造方法
? 如果我们要使用无参构造方法,此时必须自己给出
? 建议:最好永远自己手动给出无参构造方法
? (4)思考:构造方法中可不可以有return语句?
? 可以的,写成这样就行: return;
? 其次,我们在任何void类型的方法中都可以加return;,表示方法到这结束
7:给成员变量赋值
? A:setXxx()
? B: 带参构造方法
8:代码编写及测试:
? A:学生类的案例
?
class Student{
private String name;
private int age;
public Student(){
}
public Student(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age= = age;
}
}
calss StudetnTest(){
public static void main(String[] args){
Stundet s1 = new Student();
s1.setName("王祖贤");
s1.setAge(21);
System.out.println(s1.getName+"-------"+s1.getAge());
Stundet s2 = new Student("小倩","18");
System.out.println(s2.getName()+"-------"+s2.getAge());
}
}
? B:手机类的案例
?
class Phone{
private int jiage;
private String color;
public Phone(){}
public phone(int jiage,String color){
this.jage = jage;
this.color = color;
}
public int getJiage(){
return jiage;
}
public void setJiage(String jiage){
this.jiage = jiage;
}
public String getColor(){
reutrn color;
}
public void setColor(String color){
this.color = color;
}
}
?
class PhoneTest(){
public static void main(String[] args){
Phone p1 = new Phone();
p1.setJiage(2000);
p1.setColor("黑色");
System.out.println(p1.getJiage()+"----------"+p1.getColor());
Phone p2 = new Phone(1800,"红色");
System.out.println(p2.getJiage()+"----------"+p2.getColor());
}
}
?
? C:长方形类的案例
?
class ChangFang{
private int chang;
private int width;
public ChangFang(){
}
public ChangFang(int chang,int width){
this.chang = chang;
this.width = width;
}
public int getChang(){
return chang;
}
public void setChang(int chang){
this.chang = chang;
}
public int getWidth(){
return width;
}
public void setWidth(int width){
this.width = width;
}
}
class ChangFangTest{
public static void main(String[] args){
ChangFang cf1 = new ChangFang();
cf1.setChang(38);
cf1.setWidth(18);
System.out.println(cf1.getChang()+"--------"+cf1.getWidth());
ChangFang cf2 = new ChangFang(47,32);
System.out.println(cf2.getChang()+"------"+cf2.getWidth());
}
}
9:一个类的成员变量初始化过程
? Student s = new Student();
? (1)把Student.class文件加载到内存
(2)在栈内存为s开辟空间
(3)在堆内存为学生对象申请空间
(4)给学生的成员变量进行默认初始化。null,0 (String name = "灵儿" int age = 27)
(5)给学生的成员变量进行显示初始化。灵儿,27 (String name = "灵儿" int age = 27)
(6)通过构造方法给成员变量进行初始化。逍遥,30 (Student s2 = new Student("逍遥",30);)
(7)对象构造完毕,把地址赋值给s变量
10:static关键字
? (1)静态的意思。可以修饰成员变量和成员方法。
? (2)静态的特点:
? A:随着类加载而加载
? B:优先对象而存在
? C:被类的所有对象共享
? 这其实也是我们判断该不该使用静态的依据。 举例:饮水机和水杯的问题思考
? D:可以通过类名调用 既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。
? (3)静态的内存图 静态的内容在方法区的静态区
? (4)静态的注意事项
? A:在静态方法中没有this对象 B:静态只能访问静态(代码测试过)
? 因为它比对象先存在,所以先存在的成员不能访问没有存在的成员
? 比如: static int age; int age2 = 20; age = age2 (错误的)
? 因为它随着类的加载而加载,这时 age2还没有存在,所以 age = age2无法赋值
? (5)静态变量和成员变量的区别
A:所属不同 静态变量:属于类,类变量 成员变量:属于对象,对象变量,实例变量
B:内存位置不同 静态变量:方法区的静态区 成员变量:堆内存
C:生命周期不同 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失 成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
D:调用不同 静态变量:可以通过对象名调用,也可以通过类名调用 成员变量:只能通过对象名调用
11:main方法各种修饰符及参数的解释?
? public: 访问权限最大
static: 不用创建对象调用
void: 返回值给jvm没有意义
main: 就是一个常见的名称。
String[] args: 可以接收数据,提供程序的灵活性 (数据类型保存的都是String类型)
格式:java MainDemo hello world java
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash