(邓爱萍)类 对象 课本
一.类与对象
- 对象
- 对象就是组成现实世界的个体,他们之间存在着错综复杂的关系。
- 面向对象的分析
- 一些对象具有相似的特征
- 一些对象之间有相互作用
- 把这些对象以及对象之间的关系找出来。
- 类
- 把个体归纳为不同的类型。将个体分类的过程实质上就是面向对象技术中的创建类的过程。
- 类是对一组有相同特性(属性)和相同行为(方法)的对象的抽象。
public class Circle {
double xPos,yPos,radius;
public Circle(double x,double y,double r){
xPos=x;
yPos=y;
radius=r;
}
double area(){
double s;
s=Math.PI*radius*radius;
return s;
}
double perimeter(){
double p;
p=Math.PI*2*radius;
return p;
}
void move(double destX,double destY){
xPos=destX+1;
yPos=destY+1;
}
}
import java.util.Scanner;
public class CircleApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
double s,p;
Scanner sc=new Scanner(System.in);
int x,y,r;
x=sc.nextInt();
y=sc.nextInt();
r=sc.nextInt();
Circle c=new Circle(x,y,r);
s=c.area();
p=c.perimeter();
System.out.println(s+" "+p);
}
}
- 构造方法的 重载
import java.io.PrintStream;
public class Human {
String name;
char sex;
int age;
Human(String n) { name =n; }
Human(String n, char s) { name=n; sex=s; }
Human(String n,char s, int a) { name=n; sex=s; age=a;}
public static void main(String[]args){
Human h1=new Human("Liuis");
Human h2=new Human("Marry",'v');
Human h3=new Human("Bob",'男',20);
System.out.printf("%s,%c,%d",h1.name,h1.sex, h1.age);
System.out.println();
System.out.printf("%s,%c,%d",h2.name,h2.sex, h2.age);
System.out.println();
System.out.printf("%s %c %d",h3.name,h3.sex, h3.age)
}
}
(一)域的 定义
三.静态域 域—变量
1.静态域属于 整个类的 成员变量 它储存在类的内存区域的 公共存储单元中。
因此 该类的对象访问它,获取的都是相同的值
如果一个对象修改了静态域的值,静态域值的变化将反映在所有对象中
2.没有被 static 修饰的域,保存在某个对象的内存空间,它是属于某个具---体对象的
如果创建了一个类的多个对象,那么域在不同对象中拥有不同的存储单元,它们是不同的
public class StaticFieldApp {
int a=2;
static double d=3.0; 静态 成员变量(静态域)
public static void main(String args[]){
StaticFieldApp app1=new StaticFieldApp();
StaticFieldApp app2=new StaticFieldApp();
System.out.println("app1.a="+app1.a+"\tapp1.d="+app1.d);
System.out.println("app2.a="+app2.a+"\tapp2.d="+app2.d);
System.out.println("StaticFieldApp.d="+StaticFieldApp.d);
通过类名 直接访问 静态域
app1.a=90;
app1.d=7.89;
System.out.println("对象app1的域改变后");
System.out.println("app1.a="+app1.a+"\tapp1.d="+app1.d);
System.out.println("app2.a="+app2.a+"\tapp2.d="+app2.d);
System.out.println("StaticFieldApp.d="+StaticFieldApp.d);
}
}
非静态域 不能通过类名 直接访问
public class StaticFieldApp {
int a=2;
static double d=3.0;
public static void main(String args[]){
StaticFieldApp app1=new StaticFieldApp();
StaticFieldApp app2=new StaticFieldApp();
System.out.println("app1.a="+app1.a+"\tapp1.d="+app1.d);
System.out.println("app2.a="+app2.a+"\tapp2.d="+app2.d);
System.out.println("StaticFieldApp.d="+StaticFieldApp.a);
非静态域 不能通过类名 直接访问
app1.a=90;
app1.d=7.89;
System.out.println("对象app1的域改变后");
System.out.println("app1.a="+app1.a+"\tapp1.d="+app1.d);
System.out.println("app2.a="+app2.a+"\tapp2.d="+app2.d);
System.out.println("StaticFieldApp.d="+StaticFieldApp.d);
}
}
四,静态初始化器
public class StaticInit {
static int a=1;
static int b;
static{
a=30;
b=a-10;
c=90.0;
}
static double c;
int d;
StaticInit(int s) { d=s; }
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(StaticInit.a+" "+StaticInit.b+" "+StaticInit.c);
StaticInit s=new StaticInit(666);
System.out.println(s.a+" "+s.b+" "+s.c+" "+s.d); //30 20 90.0 666
System.out.println(StaticInit.a+" "+StaticInit.b+" "+StaticInit.c); //30 20 90.0
}
}
五.final 最终域 最终类
public class FinalFieldApp {
static final int a=9;
static double b=7.8;
int c; int d;
FinalFieldApp(int x ,int y){c=x; d=y;}
public int add() { return a+c+d; }
public static void main(String[] args) {
// TODO Auto-generated method stub
FinalFieldApp f=new FinalFieldApp(1,2);
System.out.println(FinalFieldApp.a+" "+f.add()); // 9 12
}
}
最终类 不能被 继承
final class Testfinal{
}
public class SubTestfinal extends Testfinal{
public SubTestfinal() { }
public static void main(String[] args) { }
}
(二)方法的 创建
一.方法的返回值
package 类对象;
public class ReturnApp {
int a; int b;
public int add(){
int s; s=a+b;
return s;
}
void setValue(int x,int y){
a=x; b=y; }
int getA(){ return a;}
int getB(){ return b; }
public static void main(String[]args){
ReturnApp r=new ReturnApp();
r.setValue(1, 2);
int sum;
sum=r.add();
System.out.println(sum+" "+r.a+" "+r.b+" "+r.getA()+" "+r.getB()); // 3 1 2 1 2
}
}
- 方法的 参数传递
public class Rectangle {
double x;------------------------------ 域(成员变量)
double y;------------------------------
Rectangle(double a,double b){
x=a;
y=b;
}
double area(){
double s; 局部变量s
s=x*y; // 类 的 域 x,y 的乘积
return s;
}
double multiply(double x,double y){
//multiply()方法的参数名 ---所在Rectangle类 的域名--相同
//在方法内部,参数 将隐藏 同名的域
double s; //局部变量s (与第9行不同)
s=x*y; // 方法 的 参数名 x,y
return s;
}
public static void main(String[] args) {
Rectangle r=new Rectangle(3,4);=========对象r
System.out.println("面积为:"+r.area());
System.out.println("multiply方法的调用结果为:"+r.multiply(10,20));
}
}
使用this
public class Rectangle {
double x;------------------------------ 域(成员变量)
double y;------------------------------
Rectangle(double a,double b){
x=a;
y=b;
}
double area(){
double s;
s=x*y; 域 x,y 的乘积
return s;
}
double multiply(double x,double y){ // 方法 的 参数名 x,y
double s;
//s=x*y;
s=this.x*this.y; ======== //this 表示当前类对象 r
return s; // this.x this.y对象 的域 x,y
}
public static void main(String[] args) {
Rectangle r=new Rectangle(3,4);=========对象r
System.out.println("面积为:"+r.area());
System.out.println("multiply方法的调用结果为:"+r.multiply(10,20));
}
}
- 赋值调用 传递方式
形参 7.8---26.52 实参的值 并没有改变
public class Functransfer {
void changex(float x){
System.out.println("x="+x);
x*=3.4;
System.out.println("x="+x);
}
public static void main(String[] args) {
float d;
d=7.8f;
System.out.println("方法调用前d的值为:"+d);
Functransfer ft=new Functransfer();
ft.changex(d);
System.out.println("方法调用后d的值为:"+d);
}
}
- 引用传递 方式(形参 实参代表 内存中的 同一存储单元)
形参---引用数据类型-(类//数组类型),,将自动采用 引用方式 调用实参
- 方法中的局部变量
1.局部变量的 作用域-从变量定义开始,,到方法的结束
类的成员变量 作用域- 整个类
public class LocalVarible {
int i=2;
void move(){
int x=7,y=8,s;
s=x*y;
System.out.println(x+" "+y+" "+s);
System.out.println(i);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
LocalVarible r=new LocalVarible();
r.move(); //成员方法 7 8 56
2
System.out.println(r.i); //成员变量 2
}
}
- 域名-(全局变量) 局部变量名 相同
(1)局部变量 将隐藏 同名的全局变量 个人书库 图书馆大库
(2)使用关键字 this,,表明 全局变量
public class EqualVarible {
int i=2;
void move(){
int i=6;
System.out.println(i); //局部变量
System.out.println(this.i); //全局变量
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EqualVarible r=new EqualVarible();
r.move();
}
}
- 静态方法
(1)静态方法 只能访问 静态域,,不能使用 非静态的成员变量
public class TestStaticFunc {
int x;
static int getx(){
return x;
}
static void setx(int t){
x=t;
}
}
(2)
public class TestStaticFunc15 {
static int x; 将x修改为静态变量(静态域)
static int getx(){ //静态方法
System.out.println("the value of x is: "+x);
return x;
}
static void setx(int t){ //静态方法
x=t;
}
public static void main(String[] args) {// main方法
TestStaticFunc15 ts=new TestStaticFunc15();
TestStaticFunc15类内 生成 TestStaticFunc15类的对象ts,并用对象ts 来引用 静态变量
也可以不用创建对象 直接使用 类名TestStaticFunc15 作为 方法名的前缀来调用 静态方法
ts.x=40;
TestStaticFunc15.getx();
ts.getx();
TestStaticFunc15.x=78;
TestStaticFunc15.getx();
ts.getx();
}
}
5.方法的 重载
1.方法名相同
2.方法返回值类型相同
3.参数表相同 (参数的个数 顺序 参数的类型必须完全相同) 方法的覆盖
如果1方法名相同,3不同==这两个方法是不同的方法 方法的重载
public class GraphicsArea {
double area(double r){ return (Math.PI*r*r); }
double area(double w, double h){return (w*h); }
double area(double x, double y,double z){return (z*(x+y)/2);}
public static void main(String[] args) {
GraphicsArea obj=new GraphicsArea();
System.out.println("圆的面积是"+obj.area(3.0));
System.out.println("长方形的面积是"+obj.area(3.0,2.0));
System.out.println("梯形的面积是"+obj.area(4.0,8.0,6.0));
}
}
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。
import java.io.*;
public class OverLoading
{
String strAdd(String str1,String str2) {return str1+str2; }
String strAdd(int int1,int int2) { return String.valueOf(int1+int2);}
String strAdd(float flt1,float flt2) {return String.valueOf (flt1+flt2);}
public static void main(String args[]) {
String s1,s2,ss,si,sf;
int i1,i2;
float f1,f2;
BufferedReader s=new BufferedReader(new InputStreamReader(System.in));
try{System.out.print ("输入第一个字符串:" );
s1= s.readLine();
System.out.print ("输入第二个字符串:" );
s2= s.readLine();}
catch(Exception e){ System.out.println(e.getMessage());}
i1 = Integer.parseInt(s1);
i2 = Integer.parseInt(s2);
f1 = Float.parseFloat(s1);
f2 = Float.parseFloat(s2);
ss = strAdd(s1,s2);
si = strAdd(i1,i2);
sf = strAdd(f1,f2);
System.out.println ("输入的二个字符串相加结果为:"+ss );
System.out.println ("输入字符串转换为整数相加结果为:"+si );
System.out.println ("输入字符串转换为浮点数相加结果为:"+sf );
}
}
(邓爱萍)类 对象 课本相关推荐
- (邓爱萍)类对象-this关键字
this.域名(成员变量 当一般方法的 参数名------对象的域名(成员变量名),,在一般方法内部使用 this.域名 public class Rectangle {double x;------ ...
- (邓爱萍)类 对象 例题
点的距离 //将笛卡儿坐标系上的点定义为一个服务类Point,Point类求坐标系上两点间的距离. //设计测试Point服务类的应用程序主类,显示输出已创建对象间的距离. public class ...
- (邓爱萍)继承 课本
一.域的隐藏 d.x 子类对象d的域x的值,,子类的同名域值 class Base{int x=3;public void m(){x++;System.out.println("base ...
- (邓爱萍)Java抽象 继承 接口
包 Javac –d package addpack ; public class IntegerAdd { public int addInt(int a,int b) ...
- python保存类对象_python 存储类对象吗
Python源码读后小结 Python 笔记 前言(还是叫杂记吧) 在python中一切皆对象, python中的对象体系大致包含了"类型对象", "Mapping对象( ...
- python 类 对象 魔法方法概念+习题
类 对象 类 对象是c++和java中都有的内容,python定义类的简单语法如下: class 类名: -类变量或者方法 Python 的类定义有点像函数定义,都是以冒号:作为类体的开始,以统一缩进 ...
- 【C++】【读个小故事就弄懂】为什么基类指针可以指向派生类对象,而派生类指针却不可以指向基类对象?(最易懂最有趣最生动的举例)
在内存中,一个基类类型的指针是覆盖N个单位长度的内存空间. 当其指向派生类的时候,由于派生类元素在内存中堆放是:前N个是基类的元素,N之后的是派生类的元素. 于是基类的指针就可 ...
- 小方制药冲刺A股上市:毛利率走低,方之光、鲁爱萍夫妇为实控人
近日,上海小方制药股份有限公司(下称"小方制药")公开预披露更新招股书,准备在上海证券交易所主板上市.据贝多财经了解,小方制药于2022年7月1日递交招股书,国信证券为其保荐机构. ...
- 【C++】利用构造函数对类对象进行初始化
运行环境:VS2017 一.对象的初始化 每一个对象都应当在它建立之时就有就有确定的内容,否则就会失去对象的意义. class Time {int hour = 0;int min = 0;int s ...
最新文章
- Coding-数组(Array)
- 2017年深度学习必读31篇论文(附下载地址)
- 智能交通系统无人机派罚单,人脸成为下一个人牌号,人工智能下谁敢犯规
- C++和C#实现剪切板数据交互
- 【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过
- python网站攻击脚本_Python scapy 实现一个简易 arp 攻击脚本
- ios web页面测试方法
- 2048游戏c语言实验报告,2048游戏语言实验报告.doc
- 终于有人把 5G 和边缘计算的关系说清楚了! | 技术头条
- Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器转载...
- java 泛型列表_如何在java中覆盖泛型列表返回类型
- linux软件安装rar,Rar for Linux的安装方法
- DTcms拓展字段添加-配参-页面获取-查询调用-数据配置
- 用质谱法定义 HLA-II 配体处理和结合规则可增强癌症表位预测
- 英文版win11怎么变成中文版?英文版win11改中文版教程
- Invalid bound statement (not found)错误解决方法
- 不可不知道的SEO与SEM术语大全
- 《数据结构》:中缀表达式合法性判断
- 大学计算机教学内容体系,大学计算机教学内容体系建设与改革论文
- QTableWidget合并单元格
热门文章
- 单目图像深度估计 - 泛化篇:S2R-DepthNet
- android查找邮件程序,Android 程序崩溃日志邮件获取
- RDKit | 基于分子指纹的相似性图
- hashmap 扩容是元素还是数组_HashMap的扩容机制---resize()
- 生信服务器 | 更改 CentOS/RHEL 6/7 中的时区
- 内容推荐 | 最新科研资讯与小技巧
- Galaxy Release_20.09 发布,新增多个数据上传组件
- NAR:中科院微生物所发布全球模式微生物基因组测序计划进展
- QIIME 2教程. 13训练特征分类器Training feature classifiers(2020.11)
- Nature Protocols:整合宏基因组、代谢组和表型分析的的计算框架