Java学习 对象
来源:互联网 发布:随手记手网页版没数据 编辑:程序博客网 时间:2024/05/03 05:23
参考自:中南工大Java.pdf
1.为什么需要类?什么是类?什么是对象?
把相同的字段封装在一起,相当于定义了一个新的数据类型,因此像int i = 0过程,首先由一个数据类型,其次有个变量,这个过程称为实例化对象,第一步在栈里查询是否有st引用,若无,则新建st,第二步在堆里new Student(),若new Student()多次,则堆里生成多个,栈里,仍是只有一个st引用
Student st;
st = new Student();
st = new Student();
类:一类事物的抽象,如桌子
对象:类的实例,具体某个事物,如我的桌子
2.引用赋值
Student st = new Student;
Student st2 = st;
实例化了两个对象,而不是一个对象,在堆里有两个new Student();因此你变我不变
3.为什么需要成员变量与成员函数?
把相同的字段与相同的方法封装起来,减少重复代码
4.什么是重载函数?overload(静态多态),函数名相同,返回类型或参数类型不同
class Calc{
int abs(int a){}
double abs(double a){}
}
5.为什么要构造函数?对类进行初始化,如果无构造函数,系统会创建一个默认的构造函数,如果我们自己定义了含有参数的构造函数,系统则不提供默认的构造函数
Customer(String name,String sex,int age){
this.name = name;
this.sex = sex;
this.age = age;
}
6.为什么要静态变量?
不同的对象(在堆里生成不同的对象数据,占用不同的内存)某个成员变量可以使用相同的内存,静态变量可以用过类名.变量名访问,如 Customer.bankName,
7.为什么要静态函数?
静态函数可以用类名.方法名访问,不用先new一个对象,再调用这个对象的方法,直接类名.方法名就可以调用了,如Customer.setName("张三");
8.为什么要静态代码块?
构造函数函数对于每个对象只执行一次,类似,静态代码块可使得多个对象的共同信息只执行一次。当类被载入时,静态代码块先被执行,且只被执行一次,静态代码块经常用来进行类属性的初始化。
class Customer{
String name;
static String bankName;
static{
bankName = "香港银行";
System.out.println("静态代码块执行");
}
}
public class StaticTest5 {
public static void main(String[] args) {
Customer zhangsan = new Customer();
Customer lisi = new Customer();
}
}
运行,控制台上打印:
静态代码块执行
9.为什么需要封装?
封装不要与构造函数搞混了,构造函数是为了初始化对象,封装是指不能暴露的成员隐藏起来,不能在类的外部被直接赋值,将成员定义为私有的,在成员前加上private修饰符,然后又通过公共方法来暴露对该隐藏成员的访问,给函数加上public修饰符,将方法定义为公共的。即防止成员被直接赋值但可以被访问。
class Customer { <span style="white-space:pre"></span>String name; <span style="white-space:pre"></span>String sex; <span style="white-space:pre"></span>private int age; //age不能在类的外部直接被赋值<span style="white-space:pre"></span>public void setAge(int age){ <pre name="code" class="plain"><span style="white-space:pre"></span>//age不能在类的外部直接被赋值,经过处理if(age<0||age>100){ System.out.println("age无法赋值"); return;}this.age = age;}
<span style="white-space:pre"></span>//public方式被访问 <span style="white-space:pre"></span>public int getAge(){ <span style="white-space:pre"></span>return this.age; <span style="white-space:pre"></span>}<span style="white-space:pre"></span> }
private < default(不写的时候,默认为default) < protected < public
private 类的内部被访问访问
default 类所在包内的所有类访问
protected 类所在包内的所有类及其子类访问
public 被包内包外的所有类防伪标
注意:public修饰类,该类就是一个公共类,可被包内包外的所有类访问,但是不是说不new一个类就可用 类名.方法名访问(这个是static修饰的结果),但是也不是只要static就可以被所有包外包内的类访问,要是修饰符不是Public 包外的类就访问不到这个类,即使是static修饰也没用。一般性公共类由public static修饰,这样方法一直在内存中且存取不用new对象。
11.什么是类中类?
类中类:在类的内部定义了类,也叫内部类,内部类可访问外部类中的成员
12.为什么需要继承?
共同的特性很多,只是成员的内容不同。即字段名相同,字段的内容不同,与为什么要有类的区别?类的提出背景,定义一个类相当于定义了一个数据类型,类似于C中的结构体,而继承的意思是,父类某些特性,子类也有,但是子类与父类有不同,如父类有show()方法打印父类名,子类也有show()方法打印子类名。
本质上讲,子类继承父类后,实例化子类的时候,系统首先实例化父类对象,再实例化子类对象。
子类继承父类,父类里的成员、方法子类也能用,当然父类里的子类修饰符要protected及以上,若为private 则访问不了
13.什么是成员覆盖?
override,子类重写父类的方法,作用为在不改变源码的情况下,对一个模块的功能进行改造
14.什么是多态?
重载是多态的一种为静态多态,动态多态的理论基础为:父类引用可以指向子类对象,List list = new ArrayList();,list.XXX()先掉哦那个子类方法,子类中没有该方法才会调用父类中的方法
15.为什么需要抽象类?抽象类除了抽象方法外与普通类差不多,可以有普通成员函数、成员变量、常量等
有abstract修饰的方法的类为抽象类(无抽象成员,只有抽象方法),说明该抽象方法一定要被继承它的子类重写
抽象类特点:
类不能被new(实例化),而是被继承
抽象方法必须被重写,除非子类也是抽象类
抽象类中也可含有普通成员函数
抽象类不能被实例化,因此抽象类无构造函数,要被类继承。。。
16.为什么需要接口?
类里的接口全部为抽象方法,方法前不用写abstract
接口里的变量为public static final 类型,方法为public 类型
- java分布式对象学习
- java面向对象学习
- java类、对象学习
- Java对象学习
- JAVA面向对象学习
- Java面向对象学习
- java 对象学习
- Java面向对象学习
- [Java学习]类、对象
- java学习对象笔记
- Java学习-其他对象
- Java学习 对象
- java 面向对象学习
- JAVA面向对象学习
- java学习--面向对象
- java学习----面向对象
- java面向对象学习
- Java 学习-对象
- Spiral Matrix II
- 创建一个基于套接字的bufferevent实例-echo程序的实现
- MapReduce Design Patterns(3. 反向索引、计数器)(四)
- VB AndAlso,OrElse和And,Or的区别
- android JNI问题
- Java学习 对象
- 解决bug:使用Genymotion模拟器时运行出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE——诺诺"涂鸦"记忆
- 使viewpagerbu不滑动,设isCanScroll =false
- Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
- POJ2431 Expedition (优先队列)
- DNS & DDoS – What is the Vulnerability of DNS Servers to DDoS Attacks?
- /********/ 代表正则表达式内容 g代表全局替换
- 关于ora-12154无法解析指定的连接标识符解决方案
- UBUNTU 学习笔记