No1_7.类和对象_Java学习笔记
一、面向对象的特点:
a.封装:封装是面向对象的核心思想,将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想;
保证了类内部数据的完整性,应用该类的用户不能轻易直接操纵此数据结构,只能执行类允许公开的数据。
b.继承:类与类之间有关系,叫做关联;继承是关联中的一种;
继承性主要利用特定对象之间的共有属性。
c.多态:将父类对象应用于子类的特征就是多态;“一个接口,多种实现”,就是同一种事物表现出的多种形态。
多态的实现并不依赖具体类,而是依赖于抽象类和接口;
在多态的机制中,比抽象类更为方便的方式是将抽象类定义为接口。
多态存在的三个必要条件
1、要有继承;
2、要有重写;
3、父类引用指向子类对象。
二、接口:由抽象方法组成的集合就是接口;大家共同遵守的一个标准;
import java.util.Scanner;
public class HelloClassObject {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("学习类和对象!类~~~~~~");
/*****************************
* 一、类:
* 1.是封装对象的属性和行为的载体。
* 2.对象的属性以成员变量的形式存在,对象的行为以成员方法的形式存在。
*
* 二、构造方法:
* 在类中除了成员方法外,还存在一种特殊类型的方法,构造方法。
* 1.与类同名;
* 2.对象的创建就是通过构造方法完成的,实例化一个对象时,自动调用构造方法;
* 3.构造方法没有返回值;
* 4.构造方法不需要void修饰;普通方法没有返回值用void修饰;
* 5.格式:public book(){}
* 6.在构造方法中可以为成员变量赋值,实例化一个本类的对象时,相应的成员变量也被初始化;
* 7.只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。
*/
/*****************************
* 三、类的主方法:
* 1.主方法是类的入口点,定义了程序从何处开始;
* 2.格式:
* public static void
* main(String[] args){}
* 3.特点:
* a.主方法是静态的。要直接在主方法中调用其它方法,则该方法必须也是静态的;
* b.主方法没有返回值;
* c.主方法的形参为数组;
***************** */
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
// Run -->Run Configurations --> Arguments 可设置参数
}
/****************
* 四、成员变量: 1.对象的属性称为成员变量;
*
* 五、成员方法:
* 1.类对象的行为。
* 2.权限修饰符 返回值类型 方法名(参数类型 参数名){方法体; 返回值;}
* 3.一个成员方法可以有参数,参数可以是对象或变量;
* 4.成员方法可以返回值和不返回任何值void;
* 5.返回值与方法返回值的类型一致,return结束;
*
* 六、局部变量:
* 1.成员方法内定义的变量,是局部变量;
* 2.方法中的形参,也属于局部变量;
* 3.方法被执行时创建,执行结束时被销毁;
* 4.局部变量在使用时,必须赋值,否则编译出错;
*
* 七、局部变量的有效范围:
* 1.局部变量的有效范围从该变量的声明开始到该变量的结束为止;
* 2.相互不嵌套的作用域可以同时声明两个名称、类型相同的局部变量;
*
*
* 八、静态变量、常量和方法
* 1.用static修饰的(变量、常量和方法)叫做静态成员;
* 2.静态成员属于类所有的,可以在本类或其他类使用“类名.静态类成员”调用 ;
* 3.静态数据和静态方法通常是为了共享数据或方法;
* 4.静态成员仍遵循public\private\protected修饰符约束;
* 5.静态方法中不可以使用this关键字;
* 6.静态方法中不可以直接调用非静态方法;
* 7.不能将方法体内的局部变量声明为static;
* 8.如果在执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域,优先执行,只执行一次;
* 例:public class
* example{ static { //some } }
*/
Book bk=new Book();
// 调用类成员变量
System.out.println("调用Book类的静态变量" + Book.PI);
// 调用类方法
bk.girl();
//实例化对象
String bookName=bk.getName();
System.out.println("输出幸运数字和书名:"+bookName);
/********************
* 九、权限修饰符
*1.包括private、public、protected
*2.控制类、成员变量和成员方法;
*3.private,只能在本类中使用,子类中不可见,其它包的类不可见;
*4.public,可以本类中使用,子类中使用,其它包的类中使用;
*5.protected,只有本包内该类的子类或其它类可访问;
*6.子类和父类不在同一包中,只有public的类可以被子类进行访问;
*7.父类不允许通过继承产生的子类访问其成员变量,用private;
*8.声明类不使用权限修改符,则默认包存取范围;
*9.类的权限设定会约束类成员的权限设定;
*
*十、this关键字
*1.this可以调用成员变量和成员方法;
*2.this引用就是对一个对象的引用;
*3.this 可以作为方法的返回值,返回一个类;
*
*十一、一个.java文件中可以有很多类。
*1.public 权限的类只能有一个(也可以一个都没有,但最多只有1个)
*2.这个.java文件的文件名必须是public类的类名(一般的情况下,这里放置main方法是程序的入口。)
*3.若这个文件中没有public的类,则文件名随便是一个类的名字即可
*4.你用Javac 编译这个.java文件的时候,它会给每一个类生成一个.class文件
*/
//范例一、自定义学生类,实例化及调用
Students st=new Students("sunshine",false,28); //创建对象
System.out.println("姓名:"+st.getName());
System.out.println("性别:"+st.getSex());
System.out.println("年龄:"+st.getAge());
//范例二、温度单位转换工具
System.out.println("请输入要转换的温度(单位:摄氏度)");
Scanner in=new Scanner(System.in);
double celsius=in.nextDouble();
CelsiusConvert cc=new CelsiusConvert();
double fahrenheit=cc.getFahrenheit(celsius);
System.out.println("转换成成的温度是(单位:华氏度)"+fahrenheit);
in.close();
}//main方法结束
// 定义构造方法
public HelloClassObject() {
this("this 调用有参构造方法!");
System.out.println("无参构造方法");
}
public HelloClassObject(String name) {
System.out.println("有参构造方法");
}
}//HelloClassObject 类结束
/*************
* @author sunshine
*自定义Book类
*/
class Book {
// 定义成员变量
private int id;
private String name;
private String category;
// 定义成员方法
public String getName() {
int id=7; //局部变量
setName("Java"); // 调用类中其它方法
return id + this.name; // 设置方法返回值
}
public void setName(String name) {
this.name = name; // 将参数值赋予类中的成员变量
}
public Book getBook() {
return this;
}
// 静态变量,可以在本类或其它类中调用
static double PI = 3.14159;
// 静态方法,可以在本类或其它类中调用
public static void girl() {
System.out.println("静态方法girl,你调用了Book中的girl方法了~~~");
}
}//Book类结束
/*************
* @author sunshine
*范例一、自定义学生类
*/
//同一个java文件中可以有多个类
class Students{
private String name;
private boolean sex; //true,男,false,女
private int age;
public Students(String name,boolean sex,int age){ //构造函数,实例化对象时,自动执行;
this.name=name;
this.sex=sex;
this.age=age;
}
public String getName(){
return name;
}
public boolean getSex(){
return sex;
}
public int getAge(){
return age;
}
}//Students类结束
//范例二、温度单位转换工具
class CelsiusConvert{ //public 不能用这个修饰,一个java文件中public的类只能有一个
public double getFahrenheit(double celsius){
double fahrenheit=1.8*celsius+32;
return fahrenheit;
}
}
//CelsiusConvert类结束
输出结果:
学习类和对象!类~~~~~~
Everyday
sunshine
happy
调用Book类的静态变量3.14159
静态方法girl,你调用了Book中的girl方法了~~~
输出幸运数字和书名:7Java
姓名:sunshine
性别:false
年龄:28
请输入要转换的温度(单位:摄氏度)
35
转换成成的温度是(单位:华氏度)95.0
No1_7.类和对象_Java学习笔记的更多相关文章
- No1_8.类和对象2_Java学习笔记_对象
对象 /**** * *一.对象 *1.概念:对象是由类抽象出来的,对象可以操作类的属性和方法解决问题,了解对象的创建.操作和消亡很必要: *2.对象的创建: * a. new操作符创建:每实例化一个 ...
- C++中临时对象的学习笔记
http://www.cppblog.com/besterChen/category/9573.html 所属分类: C/C++/STL/boost 在函数调用的时候,无论是参数为对象还是返回一个对 ...
- 类与对象 - Java学习(二)
弄清楚类与对象的本质与基本特征,是进一步学习面向对象编程语言的基本要求.面向对象程序设计与面向过程程序设计在思维上存在着很大差别,改变一种思维方式并不是一件容易的事情. 一.面向对象程序设计 程序由对 ...
- 类与对象 - PHP手册笔记
基本概念 PHP对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝. 当创建新对象时,该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常.类应在被实例化 ...
- No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类
一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类: ...
- No2_1.接口继承多态_Java学习笔记_接口
接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...
- No1_5.字符串的基本操作_Java学习笔记
import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; import java. ...
- JavaScript权威设计--JavaScript对象(简要学习笔记八)
1.属性的特性 一个属性包含一个名字和4个特性.4个特性:值,可写性,可枚举性,可配置性 2.对象的三个属性 一:原型属性 要想检测一个对象是否是另一个对象的原型,使用isPrototypeOf( ...
- No2_3.接口继承多态_Java学习笔记_多态
***多态***1.多态性:通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态:2.重写之所以具有多态性,是因为父类的方法在子类中被重写,方法名相同,实现功能不同. ...
随机推荐
- mysql数据库在Navicat Premium连接的时候出现1862错误
navicat连接打开时报1862的错误, 很就没有连接mysql看看了,今天连接的时候发现本机的mysql链接不上了,在cmd中执行动作的时候也会叫你去set password,做设置密码的动作时会 ...
- Python学习笔记总结(一)对象和流程语句总结
一.对象类型 1.数字 数字:不可变 2.字符串 字符串:不可原处修改[修改需要创建新的对象],有顺序,支持求长(len),合并(+),重复(*),索引S[0],分片(S[1:3]],成员测试(in) ...
- iOS学习之页面之间传值的方式总结
传值三种场景: 1.属性传值(从前往后传) 需求:第二个界面标签显示第一个界面输入框文字. 第一步, 在前一个界面定义属性. (语义属性声明为copy); 第二步, 在进入下一个界面之前,给属性传入数 ...
- Java学习笔记--HashMap中使用object做key的问题【转】
在HashMap中,如果需要使用多个属性组合作为key,可以将这几个属性组合成一个对象作为key.但是存在的问题是,要做get时,往往没办法保存当初put操作时的key object的referenc ...
- activity,view,window,windowmanager代码阅读总结及相互关系
ActivityThread类:performLaunchActivity函数: activity.attach(appContext, this, getInstrumentation(), r.t ...
- bzoj 1197
http://www.lydsy.com/JudgeOnline/problem.php?id=1197 我们考虑从低维向高维考虑. 记F[i][j]表示维度为i,用了j个球时最多能将空间划分为多少个 ...
- 黑马程序员_Java面向对象1_封装
3.面向对象_封装 3.1面向对象概念 3.1.1理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为(执行者) 面向对象:将功能封装进对象,强调具备了 ...
- Java Web----Java Web的数据库操作(一)
Java Web的数据库操作 一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库 ...
- 第18讲- UI常用组件之EditText
第18讲UI常用组件之EditText 三.文本输入框EditText EditTex类继承自TextView.EditText是接受用户输入信息的最重要控件.在html当中,相当于<input ...
- 【转】USB协议架构及驱动架构
1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...