JAVA学习三:面向对象进阶

1.封装
1.1封装private

概述:
封装的意义在于保护或者防止代码(数据)被我们无意中破坏。
保护成员属性,不让类外的程序直接访问和修改。
封装原则:
隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别。

在开发中,为了避免出现逻辑错误,我们建议对所有属性进行封装。
并为其提供setter及getter方法进行设置和取得操作。

1.2 this关键字

//此处为一个全参构造方法,我们要把输入的name赋值给这个对象的name;
Person(String name,int age){
name = name;
age = age;
}
//这种构造方法会语法报错,形式参数与属性值命名相同;

this关键字:
指的是当前对象。(规则:this在一个构造方法中调用另一个构造方法时,调用的代码 必须写在构造方法的第一行。)
Person(String name,int age){
this.name = name;
this.age = age;
}
this之后的属性名就是指当前对象的属性,name就是形式参数传进的值。

this还可以调动方法。
Person(){
this(“默认姓名”,1);//此处的this()调动的是当前类的有参构造方法
}
Person(String name,int age){
this.name = name;
this.age = age;
}
1.3.1静态static

经过静态static修饰的属性存储在方法区。
被static修饰的方法或者变量不需要依赖对象进行访问,只要类被加载了,就可以通过类名去访问。

Person.say();
类名.方法;

并且不会因为对象的多次创建,而在内存中建立多分数据。
无论一个类存在几个对象,静态的属性永远在内存中存在一份。4
(无论经过多少次修改,静态的属性值永远只有一个)

1.3.2用静态修饰方法

下面的代码没有创建对象时即可调用Demo类中的方法。
public class Test(){
public static void main(String[] args){
Demo.say();
}
}

class Demo{
static void say(){
System.out.print(“锄禾日当午”);
say2();//错误。say2方法非静态,无法在未创建对象时调用。静态方法无法访问非静态!
}
void say2(){
say();//正确。say2方法非静态,所以在调用时需要创建对象,创建对象时类肯定已经加载,所以可以调用静态方法say。
}
}

1.4包
介绍
1.把功能想似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2.包如同一个文件夹一样,不同的包中的类的名字是可以相同的,当同时调用两个不同包的同名类时,应该加上包名区别。
3.包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

使用规则
1.包中java文件的定义:
在.java文件的首部,必须编写类所属那个包,格式:
package 包名;

2.包的定义:
通常由多个单词组成,所有的单词的字母小写,单词与单词之间用.隔开,一般命名为“com.公司名.项目名.模块名…”

导包
import java.util.Scanner;
//或者在使用类时使用全名称
java.util.Scanner input = new java.util.Scanner(System.in);

不需要导包的类
1.lang包中的类
2.当前同包的类

1.5权限修饰符

public
protected
default
private

1.6代码块

1.编写在顺序执行的代码流程中的代码块:普通代码块。
作用
给代码分了区域。
{}出了区域就无法访问了。

2.构造代码块
class Person{
private String name;
private int age;

{
单独的代码块:就是构造代码块。
特征:对象创建时执行。且执行在构造方法之前。
区别于构造方法的是,无论用户调用那个构造方法创建对象时,
构造代码块都必然执行。且可以有多个构造代码块。
}
public Person(){}
//构造方法:也是对象创建时执行。
//当有两个以上构造方法时,构造方法不会全部执行。
public Person(String a){
name = a;
}
}

3.静态代码块
static{
随着类的加载(第一次使用),静态代码块执行。
因为类只加载一次,所以静态代码块只执行一次。
}

4.同步代码块
在后续多线程技术中学习

5.面试题
构造方法与构造代码块以及静态代码的执行顺序:
静态代码块–>构造代码块–>构造方法

1.7 main方法

public static void main(String[] args)
以上各个参数的含义如下:

public:表示公共的内容,可以被所有操作所调用
static:表示方法是静态的,可以由类名称直接调用。Demo.main()
void:表示没有任何返回值操作
main:系统规定好的方法名称,如果mian写错了或没有会报错
String[] args:字符串数组,接收参数的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值